0Pricing
Coding Interview Prep · Pelajaran

NTILE untuk Pengelompokan Rentang

Bagi baris menjadi kuartil dan rentang persentil.

NTILE untuk Pengelompokan Rentang adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Saat Anda Membutuhkan Kelompok Berukuran Sama

Pewawancara bertanya: "Bagi pelanggan ke dalam empat kelompok pengeluaran dengan jumlah anggota yang sama," atau "Di desil mana setiap baris berada?" Alatnya adalah NTILE.

NTILE(n) membagi baris yang telah diurutkan ke dalam n kelompok semerata mungkin dan memberi label setiap baris dengan nomor kelompoknya, dari 1 hingga n. Pelajaran ini membahas cara pembagiannya, cara menangani jumlah yang tidak merata, dan perbedaannya dari pemeringkatan.

Sintaks Dasar NTILE

NTILE(4) pada baris yang diurutkan berdasarkan suatu nilai menghasilkan kuartil. Seperti semua fungsi jendela, fungsi ini memerlukan klausa OVER; ORDER BY di dalamnya menentukan baris yang masuk ke kelompok rendah atau kelompok tinggi.

Pengurutan menaik menempatkan nilai terkecil di kelompok 1; pengurutan menurun membaliknya.

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

Cara NTILE Membagi Baris

Dengan 12 baris dan NTILE(4), setiap kelompok mendapatkan tepat 12 / 4 = 3 baris. Kelompok 1 = 3 nilai terendah, sedangkan kelompok 4 = 3 nilai tertinggi.

Gagasan utamanya: NTILE membagi berdasarkan jumlah baris, bukan berdasarkan rentang nilai. Dua kelompok dapat mencakup rentang nilai yang sangat berbeda selama jumlah barisnya sama.

Pembagian Tidak Merata

Bagaimana jika jumlah baris tidak habis dibagi? Dengan 10 baris dan NTILE(4), 10 / 4 = 2 dengan sisa 2. NTILE memberikan baris tambahan kepada kelompok yang lebih awal.

  • Kelompok 1: 3 baris
  • Kelompok 2: 3 baris
  • Kelompok 3: 2 baris
  • Kelompok 4: 2 baris

Jadi, ukuran kelompok berbeda paling banyak satu baris, dan kelompok yang lebih besar muncul lebih awal. Aturan tepat ini adalah detail favorit dalam wawancara.

NTILE Mengabaikan Nilai yang Sama

Jebakan penting: NTILE tidak mempertahankan nilai yang sama dalam kelompok yang sama. NTILE mengisi berdasarkan posisi, sehingga dua baris dengan total_spend yang identik dapat masuk ke kelompok berbeda hanya berdasarkan urutan baris.

Jika bisnis mengharuskan nilai yang sama berbagi tingkatan, NTILE bukan alat yang tepat; Anda memerlukan pendekatan berbasis nilai. Pewawancara sengaja menanamkan jebakan ini.

Desil dan Persentil

Jumlah kelompok hanyalah angka yang Anda berikan. NTILE(10) menghasilkan desil, sedangkan NTILE(100) menghasilkan kelompok persentil. Inilah cara analis mengelompokkan pengguna ke dalam tingkatan kinerja atau kelompok risiko.

Keluaran tersebut adalah nomor kelompok, sehingga nilai dalam kelompok 9 pada NTILE(10) berada di desil tertinggi kedua.

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

Kelompok Berdasarkan Partisi

Tambahkan PARTITION BY untuk membuat kelompok secara independen di dalam setiap grup, misalnya kuartil pengeluaran per wilayah. Setiap wilayah memulai lagi dari kelompok 1.

Ini menjawab pertanyaan seperti "pelanggan kuartil teratas di setiap wilayah," ketika wilayah dengan pengeluaran keseluruhan rendah pun tetap memiliki kelompok 4 sendiri.

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

Memfilter Tingkatan Tertentu

Anda tidak dapat menempatkan NTILE(...) langsung dalam klausa WHERE; fungsi jendela dihitung setelah WHERE. Bungkus kueri dalam CTE atau subkueri, lalu lakukan penyaringan berdasarkan kolom kelompok.

Pola ini, "berikan saya pembelanja kuartil teratas," adalah cara paling umum NTILE muncul dalam jawaban nyata.

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 Dibandingkan dengan Persentil Berbasis Nilai

NTILE membentuk kelompok berdasarkan jumlah baris yang sama. Jika Anda memerlukan persentil statistik yang sesungguhnya (nilai pada persentil ke-90), gunakan PERCENTILE_CONT atau PERCENTILE_DISC.

  • NTILE(100): kelompok persentil tempat suatu baris berada, berdasarkan posisi peringkat.
  • PERCENTILE_CONT(0.9): nilai aktual pada persentil ke-90.

Mengetahui perbedaan ini membedakan jawaban yang penuh keyakinan dari tebakan.

Saat ORDER BY Penting

NTILE memerlukan ORDER BY di dalam OVER; kelompok tidak bermakna tanpa urutan yang ditentukan. Arahnya menentukan ujung mana yang menjadi kelompok 1.

Jika nilai yang sama membuat penetapan menjadi ambigu dan kelompok tepat untuk baris yang berada di batas sangat penting, tambahkan kolom penentu seri ke dalam pengurutan untuk mendapatkan hasil yang deterministik dan dapat direproduksi.

Memberi Nama pada Kelompok

Nomor kelompok mentah (1, 2, 3, 4) jarang menjadi keluaran akhir. Analis biasanya memetakannya ke label bisnis seperti Rendah, Sedang, Tinggi, dan Teratas dengan ekspresi CASE atas hasil NTILE.

Hitung NTILE dalam CTE, lalu terjemahkan nomor tersebut dalam kueri luar. Dengan demikian, logika jendela tetap bersih dan presentasi keluaran siap digunakan.

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;

Pemeriksaan Singkat

Uji aturan pembagian yang tidak merata.

Ringkasan

NTILE membagi baris yang telah diurutkan ke dalam kelompok dengan jumlah anggota sama:

  • NTILE(n) memberi label baris dari 1 hingga n; NTILE(4) = kuartil, NTILE(10) = desil.
  • NTILE membagi berdasarkan jumlah baris, bukan rentang nilai, dan memberikan baris tambahan kepada kelompok yang lebih awal.
  • NTILE tidak mempertahankan nilai yang sama dalam kelompok yang sama dan tidak dapat ditempatkan langsung dalam WHERE.
  • Untuk mendapatkan nilai persentil yang sesungguhnya, gunakan PERCENTILE_CONT.

Berikutnya: mengambil nilai batas dengan FIRST_VALUE, LAST_VALUE, dan batas bingkai.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “NTILE untuk Pengelompokan Rentang” gratis?

Ya — teks lengkap “NTILE untuk Pengelompokan Rentang” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “NTILE untuk Pengelompokan Rentang”?

Bagi baris menjadi kuartil dan rentang persentil. Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?

Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “NTILE untuk Pengelompokan Rentang” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?

Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. LAG dan LEAD untuk Baris Berdekatan
  2. Perubahan Antar-Periode
  3. NTILE untuk Pengelompokan Rentang
  4. FIRST_VALUE, LAST_VALUE, dan Tepi Frame
← Kembali ke Coding Interview Prep