PERCENTILE_DISC belirli bir yüzdelik dilim değerini hesaplar. Belirtilen sütundaki değerleri artan düzende sıralar ve kümülatif dağılımı belirtilen yüzdelik dilime eşit veya ondan büyük olan ilk değeri döndürür.
PERCENTILE_DISC hem bir toplama işlevi hem de bir pencere işlevidir.
Sözdizimi
-- Aggregate function
PERCENTILE_DISC(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>])
-- Window function
PERCENTILE_DISC(<col_name>, DOUBLE <percentile>[, BOOLEAN <isIgnoreNull>]) OVER ([partition_clause] [orderby_clause])
Parametreler
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dönüş değeri
Yüzdelik dilim değerini döndürür. Veri türü, col_name öğesinin veri türüyle eşleşir.
Örnekler
Örnek 1: NULL değerlerini yoksayarak (varsayılan davranış) yüzdelik dilim değerlerini hesaplama
SELECT
x,
PERCENTILE_DISC(x, 0) OVER() AS min,
PERCENTILE_DISC(x, 0.5) OVER() AS median,
PERCENTILE_DISC(x, 1) OVER() AS max
FROM VALUES('c'),(NULL),('b'),('a') AS tbl(x);
Sonuç:
+------------+------------+------------+------------+
| x | min | median | max |
+------------+------------+------------+------------+
| c | a | b | c |
| NULL | a | b | c |
| b | a | b | c |
| a | a | b | c |
+------------+------------+------------+------------+
NULL değeri sıralamadan hariç tutulur. NULL olmayan üç değer a, b, c artan düzende sıralandığından 0. yüzdelik dilim a, 50. yüzdelik dilim b ve 100. yüzdelik dilim c olur.
Örnek 2: NULL değerini en küçük değer olarak ele alarak yüzdelik dilim değerlerini hesaplama
SELECT
x,
PERCENTILE_DISC(x, 0, false) OVER() AS min,
PERCENTILE_DISC(x, 0.5, false) OVER() AS median,
PERCENTILE_DISC(x, 1, false) OVER() AS max
FROM VALUES('c'),(NULL),('b'),('a') AS tbl(x);
Sonuç:
+------------+------------+------------+------------+
| x | min | median | max |
+------------+------------+------------+------------+
| c | NULL | a | c |
| NULL | NULL | a | c |
| b | NULL | a | c |
| a | NULL | a | c |
+------------+------------+------------+------------+
isIgnoreNull parametresi false olarak ayarlandığında NULL değeri a, b ve c değerlerinin altında sıralanır. Bu durumda 0. yüzdelik dilim NULL olur ve 50. yüzdelik dilim b değerinden a değerine kayar.