Perintah #45 · Window Function

ROW_NUMBER di SQL

Memberi nomor urut 1, 2, 3, ... untuk setiap baris, bisa diulang dari 1 di tiap kelompok.

Sintaks

ROW_NUMBER() OVER (PARTITION BY kelompok ORDER BY kolom)
BagianKeterangan
ORDER BYWajib. Menentukan siapa nomor 1.
PARTITION BYOpsional. Nomor diulang dari 1 di tiap kelompok.

Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.

Contoh ROW_NUMBER

Data contoh: penjualan

Tabel penjualan

idtanggalkaryawan_idprodukkategoriqtyharga
1 2026-01-05 4 Laptop Elektronik 2 8500000
2 2026-01-12 6 Printer Elektronik 1 2300000
3 2026-01-20 4 Kursi Kantor Furnitur 5 1200000
4 2026-02-03 6 Laptop Elektronik 1 8500000
5 2026-02-14 4 Meja Kerja Furnitur 3 1750000
6 2026-02-25 5 Kertas A4 ATK 20 55000
7 2026-03-02 6 Kursi Kantor Furnitur 4 1200000
8 2026-03-10 4 Printer Elektronik 2 2300000
9 2026-03-18 5 Kertas A4 ATK 30 55000
10 2026-03-27 6 Monitor Elektronik 3 1900000
query.sql
SELECT kategori, produk, qty * harga AS omzet,
       ROW_NUMBER() OVER (
         PARTITION BY kategori ORDER BY qty * harga DESC
       ) AS urutan
FROM penjualan;

Hasil 10 baris

kategoriprodukomzeturutan
ATK Kertas A4 1650000 1
ATK Kertas A4 1100000 2
Elektronik Laptop 17000000 1
Elektronik Laptop 8500000 2
Elektronik Monitor 5700000 3
Elektronik Printer 4600000 4
Elektronik Printer 2300000 5
Furnitur Kursi Kantor 6000000 1
Furnitur Meja Kerja 5250000 2
Furnitur Kursi Kantor 4800000 3

Transaksi terbesar di tiap kategori mendapat nomor 1.

Belajar SQL bareng mentor

Hafal sintaks itu mudah. Menjawab pertanyaan bisnis, itu skill.

Private Class Python & SQL untuk Data: dari query dasar sampai JOIN dan studi kasus kerja, dengan kurikulum dan jadwal yang menyesuaikan kamu.

Lihat Private Class