Menemukan Rekaman Teratas-N
Dapatkan nilai tertinggi dan terendah.
Menemukan Rekaman Teratas-N adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 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 SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Apa itu kueri N teratas
Kueri N teratas menjawab pertanyaan seperti "3 produk termahal", "10 pesanan terbaru", atau "5 nilai terendah".
Kueri ini hanyalah pengurutan ditambah pembatasan, tetapi sangat umum sehingga layak memiliki nama.
-- Top 3 most expensive products
SELECT name, price
FROM products
ORDER BY price DESC
LIMIT 3;Catatan N terbawah
Untuk nilai terkecil, balik arah pengurutannya. Urutkan ASC dan ambil N baris pertama untuk mendapatkan baris dengan nilai termurah, tertua, atau terendah.
-- 5 cheapest products
SELECT name, price
FROM products
ORDER BY price ASC
LIMIT 5;Menambahkan penentu seri
Jika beberapa baris memiliki nilai batas yang sama, basis data memilih di antaranya secara sembarang. Tambahkan kunci sekunder yang unik agar hasilnya stabil dan dapat diulang.
SELECT id, name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;N teratas setelah penyaringan
Kueri N teratas bekerja pada kumpulan yang telah disaring. Letakkan klausa WHERE terlebih dahulu untuk membatasi kandidat, lalu urutkan dan batasi.
Ini menemukan 3 produk termahal dalam kategori 'Buku'.
SELECT name, price
FROM products
WHERE category = 'Books'
ORDER BY price DESC
LIMIT 3;N teratas setelah agregasi
Anda juga dapat memberi peringkat pada nilai hasil perhitungan. Kelompokkan, agregasikan, lalu urutkan hasil agregasi dan batasi.
Ini mengembalikan 5 pelanggan yang membelanjakan uang paling banyak secara keseluruhan.
SELECT customer_id, SUM(total) AS spent
FROM orders
GROUP BY customer_id
ORDER BY spent DESC
LIMIT 5;Pendekatan fungsi pemeringkatan
Fungsi jendela seperti ROW_NUMBER() memberikan peringkat kepada setiap baris. Bungkus kueri, lalu pertahankan baris yang peringkatnya kecil. Cara ini dapat digunakan untuk "N teratas per kelompok".
SELECT name, price
FROM (
SELECT name, price,
ROW_NUMBER() OVER (ORDER BY price DESC) AS rn
FROM products
) ranked
WHERE rn <= 3;RANK dibandingkan ROW_NUMBER untuk nilai yang sama
ROW_NUMBER() selalu memberikan nomor yang berbeda, sehingga mengembalikan tepat N baris meskipun ada nilai yang sama. RANK() memberikan nomor yang sama kepada baris dengan nilai yang sama, sehingga "3 teratas" dapat mengembalikan lebih dari 3 baris jika ada nilai yang sama di posisi ketiga.
SELECT name, price,
RANK() OVER (ORDER BY price DESC) AS rnk
FROM products;N teratas per kelompok
Untuk mendapatkan produk teratas di setiap kategori, bagi pemeringkatan berdasarkan kategori. PARTITION BY memulai ulang penomoran untuk setiap kelompok.
SELECT category, name, price
FROM (
SELECT category, name, price,
ROW_NUMBER() OVER (
PARTITION BY category
ORDER BY price DESC
) AS rn
FROM products
) t
WHERE rn = 1;Satu baris per kelompok dengan DISTINCT ON
DISTINCT ON milik PostgreSQL adalah cara ringkas untuk memilih baris teratas per kelompok. Cantumkan kolom pengelompokan, lalu urutkan sehingga baris yang diinginkan muncul pertama dalam setiap kelompok.
SELECT DISTINCT ON (category)
category, name, price
FROM products
ORDER BY category, price DESC;Menyertakan nilai yang sama dengan WITH TIES
Jika Anda ingin 3 baris teratas sekaligus semua baris yang memiliki nilai sama dengan baris ke-3, gunakan FETCH ... WITH TIES standar. Bentuk ini mengembalikan 3 baris, ditambah baris lain yang memiliki nilai sama dengan baris terakhir.
SELECT name, price
FROM products
ORDER BY price DESC
FETCH FIRST 3 ROWS WITH TIES;Satu nilai teratas
Untuk hanya mendapatkan satu baris dengan nilai tertinggi atau terendah, ORDER BY ... LIMIT 1 adalah pola yang paling sederhana, lebih jelas dan sering kali lebih cepat daripada subkueri dengan MAX().
-- The single most recent order
SELECT id, total, created_at
FROM orders
ORDER BY created_at DESC
LIMIT 1;Pemeriksaan singkat
Anda menginginkan 3 harga teratas, tetapi jika ada nilai yang sama di posisi ke-3, Anda ingin semuanya disertakan.
Ringkasan
Kini Anda dapat menemukan catatan N teratas dengan semua cara penting:
ORDER BY ... LIMIT nuntuk daftar nilai teratas/terbawah sederhana- Tambahkan penentu seri yang unik agar hasil tetap stabil
ROW_NUMBER()atauDISTINCT ONuntuk N teratas per kelompokFETCH ... WITH TIESuntuk mempertahankan baris dengan nilai yang sama
Dengan ini, pembahasan tentang pengurutan, pembatasan, dan N teratas selesai. Kini Anda dapat mengatur urutan kumpulan hasil apa pun.
SELECT name, price
FROM products
ORDER BY price DESC, id
LIMIT 3;Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menemukan Rekaman Teratas-N” gratis?
Ya — teks lengkap “Menemukan Rekaman Teratas-N” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menemukan Rekaman Teratas-N”?
Dapatkan nilai tertinggi dan terendah. Kamu berlatih SQL Academy 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 SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy 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 4 dari 4.
Berapa lama pelajaran “Menemukan Rekaman Teratas-N” 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 SQL Academy ini?
Ya. Setiap pelajaran SQL Academy 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
- Mengurutkan dengan ORDER BY
- Mengurutkan Berdasarkan Beberapa Kolom
- LIMIT dan OFFSET
- Menemukan Rekaman Teratas-N