0Pricing
SQL Interview Prep · Ders

Gruplara Ayırma için NTILE

Satırları çeyreklere ve yüzdelik dilim aralıklarına bölün.

Gruplara Ayırma için NTILE, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

Eşit Büyüklükte Kovalar Gerektiğinde

Mülakatçılar şöyle sorar: "Müşterileri harcama açısından dört eşit gruba ayırın" veya "Her satır hangi desilde?" Kullanacağınız araç NTILE'dır.

NTILE(n), sıralanmış satırları mümkün olduğunca eşit biçimde n kovaya dağıtır ve her satıra 1'den n'e kadar kova numarası verir. Bu derste dağıtımın nasıl yapıldığını, eşit olmayan satır sayılarının nasıl ele alındığını ve sıralamadan farkını öğreneceksiniz.

Temel NTILE Sözdizimi

Bir değere göre sıralanmış satırlar üzerinde kullanılan NTILE(4), çeyreklikler üretir. Tüm pencere işlevleri gibi bunun da bir OVER yan tümcesine ihtiyacı vardır; içindeki ORDER BY, hangi satırların düşük, hangilerinin yüksek kovalara gireceğine karar verir.

Artan sıralama en küçük değerleri 1. kovaya yerleştirir; azalan sıralama ise bunu tersine çevirir.

SELECT
  customer_id,
  total_spend,
  NTILE(4) OVER (ORDER BY total_spend) AS spend_quartile
FROM customers;

NTILE Satırları Nasıl Dağıtır

12 satır ve NTILE(4) kullanıldığında her kovaya tam olarak 12 / 4 = 3 satır düşer. 1. kova en düşük 3 değeri, 4. kova ise en yüksek 3 değeri içerir.

Temel fikir şudur: NTILE, değer aralıklarına göre değil, satır sayısına göre böler. Aynı sayıda satır içerdikleri sürece iki kova çok farklı değer aralıklarını kapsayabilir.

Eşit Olmayan Bölme

Satır sayısı eşit bölünemiyorsa ne olur? 10 satır ve NTILE(4) kullanıldığında 10 / 4 = 2, kalan 2 olur. NTILE, fazladan satırları önceki kovalara verir.

  • 1. kova: 3 satır
  • 2. kova: 3 satır
  • 3. kova: 2 satır
  • 4. kova: 2 satır

Böylece kova boyutları en fazla bir satır farklı olur ve daha büyük kovalar önce gelir. Bu kesin kural, mülakatlarda sık sorulan bir ayrıntıdır.

NTILE Değerlerdeki Eşitlikleri Yok Sayar

Kritik tuzak: NTILE, eşit değerleri aynı kovada tutmaz. Konumlara göre doldurma yaptığı için aynı total_spend değerine sahip iki satır, yalnızca satır sırasına bağlı olarak farklı kovalara düşebilir.

İş gereksinimi eşit değerlerin aynı kademeyi paylaşmasını gerektiriyorsa NTILE doğru araç değildir; bunun yerine değer tabanlı bir yaklaşım kullanmanız gerekir. Mülakatçılar bu tuzağı bilerek kurar.

Desiller ve Yüzdelikler

Kova sayısı, verdiğiniz sayıdan ibarettir. NTILE(10) desilleri, NTILE(100) ise yüzdelik bantlarını verir. Analistler kullanıcıları performans kademelerine veya risk bantlarına ayırmak için bunu kullanır.

Çıktı bant numarasıdır; dolayısıyla NTILE(10) içinde 9. kovada bulunan bir değer, en yüksekten ikinci desilde yer alır.

SELECT
  user_id,
  score,
  NTILE(10) OVER (ORDER BY score DESC) AS decile
FROM leaderboard;

Bölümlere Ayrılmış Kovalar

Her grup içinde bağımsız olarak kovalama yapmak için PARTITION BY ekleyin; örneğin bölge başına harcama çeyreklikleri oluşturabilirsiniz. Her bölge 1. kovadan yeniden başlar.

Bu, "her bölgedeki en üst çeyreklik müşteriler" gibi soruları yanıtlar; toplam harcaması düşük olan bir bölgenin bile kendine ait 4. kovası olur.

SELECT
  region,
  customer_id,
  total_spend,
  NTILE(4) OVER (
    PARTITION BY region
    ORDER BY total_spend DESC
  ) AS regional_quartile
FROM customers;

Belirli Bir Kademeye Filtreleme

NTILE(...) ifadesini doğrudan WHERE yan tümcesine koyamazsınız; pencere işlevleri WHERE'den sonra hesaplanır. Sorguyu bir CTE veya alt sorgu içine sarın, ardından kova sütununa göre filtreleyin.

"Bana harcama yapanların en üst çeyreklik grubunu ver" kalıbı, NTILE'ın gerçek bir çözümde kullanılmasının en yaygın yoludur.

WITH q AS (
  SELECT customer_id, total_spend,
         NTILE(4) OVER (ORDER BY total_spend DESC) AS quartile
  FROM customers
)
SELECT customer_id, total_spend
FROM q
WHERE quartile = 1;

NTILE ve Değer Tabanlı Yüzdelikler

NTILE, eşit satır sayılarına göre kovalara ayırır. Bunun yerine gerçek bir istatistiksel yüzdelik değere (90. yüzdelikteki değere) ihtiyacınız varsa PERCENTILE_CONT veya PERCENTILE_DISC kullanın.

  • NTILE(100): Bir satırın sıralamadaki konumuna göre hangi yüzdelik bandında bulunduğu.
  • PERCENTILE_CONT(0.9): 90. yüzdelikteki gerçek değer.

Bu ayrımı bilmek, kendinden emin bir yanıtı tahminden ayırır.

ORDER BY Önemli Olduğunda

NTILE, OVER içinde bir ORDER BY gerektirir; tanımlanmış bir sıralama olmadan kovalar anlamsızdır. Yön, 1. kovanın hangi uçta olacağını belirler.

Eşit değerler atamayı belirsiz hâle getiriyorsa ve sınırdaki bir satırın tam kovası önemliyse, kesin ve tekrarlanabilir sonuçlar için sıralamaya bir eşitlik bozucu sütun ekleyin.

Kovaları Adlarla Etiketleme

Ham kova numaraları (1, 2, 3, 4) nadiren nihai çıktıdır. Analistler genellikle bunları CASE ifadesiyle NTILE sonucuna uygulayarak Düşük, Orta, Yüksek ve En Üst gibi iş etiketlerine dönüştürür.

NTILE'ı bir CTE içinde hesaplayın, ardından dış sorguda numarayı çevirin. Bu, pencere mantığını temiz tutar ve çıktıyı sunuma hazır hâle getirir.

WITH q AS (
  SELECT customer_id, total_spend,
         NTILE(4) OVER (ORDER BY total_spend) AS bucket
  FROM customers
)
SELECT customer_id, total_spend,
  CASE bucket
    WHEN 1 THEN 'Low'
    WHEN 2 THEN 'Medium'
    WHEN 3 THEN 'High'
    WHEN 4 THEN 'Top'
  END AS spend_tier
FROM q;

Hızlı Kontrol

Eşit olmayan dağıtım kuralını sınayın.

Özet

NTILE, sıralanmış satırları eşit sayıda satır içeren kovalara dağıtır:

  • NTILE(n) satırları 1..n olarak etiketler; NTILE(4) çeyreklikleri, NTILE(10) desilleri verir.
  • Değer aralığına göre değil, satır sayısına göre böler ve fazladan satırları önceki kovalara verir.
  • Eşit değerlere sahip satırları birlikte tutmaz ve doğrudan WHERE içinde kullanılamaz.
  • Gerçek bir yüzdelik değeri için PERCENTILE_CONT kullanın.

Sırada: FIRST_VALUE, LAST_VALUE ve çerçeve sınırlarıyla sınır değerlerini çekmek.

Sıkça Sorulan Sorular

“Gruplara Ayırma için NTILE” dersi ücretsiz mi?

Evet — “Gruplara Ayırma için NTILE” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“Gruplara Ayırma için NTILE” dersinde ne öğreneceğim?

Satırları çeyreklere ve yüzdelik dilim aralıklarına bölün. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Gruplara Ayırma için NTILE” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Bitişik Satırlar için LAG ve LEAD
  2. Dönemden Döneme Değişim
  3. Gruplara Ayırma için NTILE
  4. FIRST_VALUE, LAST_VALUE ve Çerçeve Sınırları
← SQL Interview Prep Sayfasına Dön