NTILE: eşit dilimler
NTILE(4) sıralı satırları 4 eşit gruba (çeyrek) böler. Müşteri segmentasyonunda çok kullanılır.
SELECT name, price,
NTILE(4) OVER (ORDER BY price) AS fiyat_ceyregi
FROM products;
PERCENT_RANK ve CUME_DIST
PERCENT_RANK(): (sıra − 1) / (satır sayısı − 1). 0 ile 1 arası.CUME_DIST(): Bu değere eşit veya küçük satırların oranı.
SELECT first_name, salary,
ROUND(PERCENT_RANK() OVER (ORDER BY salary), 2) AS yuzdelik
FROM employees
ORDER BY salary;
FIRST_VALUE, LAST_VALUE, NTH_VALUE
SELECT category, name, price,
FIRST_VALUE(name) OVER (PARTITION BY category ORDER BY price DESC) AS en_pahali
FROM products;
LAST_VALUE tuzağıVarsayılan çerçeve “baştan bu satıra” olduğu için LAST_VALUE genelde satırın kendisini döndürür. Doğrusu:
LAST_VALUE(x) OVER (... ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING).Derinleş: dilimler ve eşitlik
NTILE eşit büyüklükte gruplar üretir; aynı değere sahip iki satır farklı dilimlere düşebilir. “Üst %25 müşteri” derken bu kabul edilebilir mi, yoksa değer eşiği mi (PERCENT_RANK >= 0.75) istiyorsun? İkisi farklı sayıda müşteri döndürür. Belirleyici sonuç için ORDER BY'a benzersiz bir anahtar ekle: NTILE(4) OVER (ORDER BY siparis, customer_id).