Funzione APPROXIMATE PERCENTILE_DISC - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Funzione APPROXIMATE PERCENTILE_DISC

APPROXIMATE PERCENTILE_DISC è una funzione di distribuzione inversa che presuppone un modello di distribuzione discreta. Prende un valore percentile e una specifica di ordinamento e restituisce un elemento dall'insieme specificato. L'approssimazione consente alla funzione di eseguire molto più rapidamente, con un errore relativo basso di circa lo 0,5 percento.

Per un valore percentile dato, APPROXIMATE PERCENTILE_DISC utilizza un algoritmo di sintesi quantile per approssimare il percentile discreto dell'espressione nella clausola ORDER BY. APPROXIMATE PERCENTILE_DISC restituisce il valore con il valore di distribuzione cumulativa più piccolo (rispetto alla stessa specifica di ordinamento) maggiore o uguale al percentile.

Sintassi

APPROXIMATE PERCENTILE_DISC ( percentile ) WITHIN GROUP (ORDER BY expr)

Argomenti

percentile

Costante numerica compresa tra 0 e 1. I valori null vengono ignorati nel calcolo.

WITHIN GROUP ( ORDER BY expr)

La clausola che specifica i valori numerici o di data/ora per ordinare e calcolare il percentile.

Valori restituiti

Lo stesso tipo di dati dell'espressione ORDER BY nella clausola WITHIN GROUP.

Note per l'utilizzo

Se l'affermazione APPROXIMATE PERCENTILE_DISC comprende una clausola GROUP BY, l'insieme di risultati è limitato. Il limite varia in base al tipo di nodo e al numero di nodi. Se il limite viene superato, la funzione ha esito negativo e restituisce il seguente errore.

GROUP BY limit for approximate percentile_disc exceeded.

Se è necessario valutare più gruppi di quelli consentiti dal limite, considerare l'utilizzo di Funzione PERCENTILE_CONT.

Esempi

L'esempio seguente restituisce il numero di vendite, le vendite totali e il valore del cinquantesimo percentile per le prime 10 date.

select top 10 date.caldate, count(totalprice), sum(totalprice), approximate percentile_disc(0.5) within group (order by totalprice) from listing join date on listing.dateid = date.dateid group by date.caldate order by 3 desc; caldate | count | sum | percentile_disc -----------+-------+------------+---------------- 2008-01-07 | 658 | 2081400.00 | 2020.00 2008-01-02 | 614 | 2064840.00 | 2178.00 2008-07-22 | 593 | 1994256.00 | 2214.00 2008-01-26 | 595 | 1993188.00 | 2272.00 2008-02-24 | 655 | 1975345.00 | 2070.00 2008-02-04 | 616 | 1972491.00 | 1995.00 2008-02-14 | 628 | 1971759.00 | 2184.00 2008-09-01 | 600 | 1944976.00 | 2100.00 2008-07-29 | 597 | 1944488.00 | 2106.00 2008-07-23 | 592 | 1943265.00 | 1974.00