Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

SQL Lanjutan

Pelajaran 15 dari 18

Window function

Peringkat dengan ROW_NUMBER, RANK, dan NTILE

Setelah pelajaran ini kamu bisa memberi nomor urut dan peringkat per kelompok tanpa meringkas barisnya.

±14 menitDiperiksa 27 Sep 2026

Materi

Window function menghitung sebuah nilai untuk setiap baris dari sekumpulan baris di sekitarnya, tanpa meringkas baris-baris itu menjadi satu. Di situlah bedanya dengan GROUP BY: GROUP BY mengubah tiga puluh siswa menjadi tiga baris kelas, sedangkan window function tetap mengembalikan tiga puluh baris ditambah satu kolom hasil. Penandanya kata OVER. Di dalam kurungnya, PARTITION BY membagi baris menjadi kelompok yang dihitung terpisah, dan ORDER BY menentukan urutan di dalam setiap kelompok.

SELECT siswa, kelas, skor,
       ROW_NUMBER() OVER (PARTITION BY kelas ORDER BY skor DESC) AS nomor,
       RANK()       OVER (PARTITION BY kelas ORDER BY skor DESC) AS peringkat,
       DENSE_RANK() OVER (PARTITION BY kelas ORDER BY skor DESC) AS peringkat_rapat
FROM nilai_ujian;

Ketiga fungsi itu baru berbeda ketika ada nilai kembar. ROW_NUMBER memberi 1, 2, 3, 4 tanpa peduli kembar. RANK memberi nomor yang sama kepada nilai kembar lalu melompati nomor sesudahnya: 1, 2, 2, 4. DENSE_RANK juga memberi nomor sama tetapi tidak melompat: 1, 2, 2, 3. NTILE(n) membagi baris menjadi n kelompok yang besarnya serata mungkin; bila tidak bisa rata, kelompok yang lebih besar diletakkan di depan, jadi NTILE(4) pada sepuluh siswa menghasilkan kelompok berisi 3, 3, 2, dan 2 siswa. Pada kueri ber-GROUP BY, window function membaca baris hasil pengelompokan: RANK() OVER (ORDER BY COUNT(*) DESC) memeringkat kelompoknya.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke

Tampilkan 4 lagi

Sebagian materi kelas ini diadaptasi dari Software Carpentry — Databases and SQL (sql-novice-survey) (CC-BY-4.0), Data Carpentry — SQL for Ecology (CC-BY-4.0), Kaggle learntools — Intro to SQL dan Advanced SQL (Apache-2.0), NUKnightLab — SQL Murder Mystery (CC-BY-SA-4.0).