Lesson 03 / Advanced Querying
Window Function
Menghitung nilai antarbaris tanpa menggabungkan hasil akhir.
EST. 25 MIN
Window Function
Window function menghitung nilai pada sekumpulan baris sambil mempertahankan setiap baris hasil. Contoh sederhana adalah memberi peringkat produk berdasarkan harga.
Tujuan belajar
Setelah lesson ini, kamu dapat memberi peringkat pada setiap baris dengan RANK() OVER (...) dan memakai PARTITION BY untuk memulai perhitungan ulang per kelompok.
SELECT
product_name,
price,
RANK() OVER (ORDER BY price DESC) AS price_rank
FROM products;
Gunakan PARTITION BY bila perhitungan perlu dimulai kembali untuk setiap kelompok, misalnya untuk setiap kategori produk.
Memahami OVER
Bagian OVER (ORDER BY price DESC) menentukan jendela perhitungan. RANK() memberi peringkat, tetapi setiap produk tetap tampil sebagai satu baris hasil. Ini berbeda dari GROUP BY yang biasanya menyatukan banyak baris menjadi satu ringkasan.
SELECT
category,
product_name,
price,
RANK() OVER (
PARTITION BY category
ORDER BY price DESC
) AS category_rank
FROM products;
PARTITION BY category membuat peringkat dimulai lagi untuk setiap kategori. DENSE_RANK() mirip RANK(), tetapi tidak melompati nomor setelah nilai seri.
Coba sendiri
Pada dataset HR, gabungkan karyawan dan gaji untuk bulan yang diminta, lalu gunakan RANK() untuk membuat salary_rank dari gaji tertinggi.
Jebakan umum
Window function membutuhkan OVER (...). Bila ingin menyaring hasil peringkat, gunakan CTE atau subquery; hasil window function tidak dapat dipakai langsung di WHERE pada level query yang sama.
Practice
Latihan
02 EXERCISE
-
EXERCISE 01 / GUIDED_PRACTICE
Siapkan data gaji untuk ranking
Sebelum memakai RANK(), gabungkan employees dan salaries untuk bulan 2024-07-01. Tampilkan nama karyawan dan gaji bruto, lalu urutkan dari gaji tertinggi.
- FOCUS
- JOIN, WHERE, and ORDER BY
- DATASET
- HR
- ESTIMATED MINUTES
- 6
Practice workspace
Tulis dan jalankan query
Menyiapkan SQL runtime...
Dataset: HR. Query berjalan lokal di browser.
Hasil query
0 ROWS
Jalankan query untuk menampilkan hasil di sini.
Masuk untuk menandai latihan selesai.
-
EXERCISE 02 / GUIDED_PRACTICE
Beri peringkat gaji karyawan
Gunakan query latihan sebelumnya, lalu tambahkan RANK() untuk membuat salary_rank dari gaji tertinggi.
- FOCUS
- RANK window function
- DATASET
- HR
- ESTIMATED MINUTES
- 10
Practice workspace
Tulis dan jalankan query
Menyiapkan SQL runtime...
Dataset: HR. Query berjalan lokal di browser.
Hasil query
0 ROWS
Jalankan query untuk menampilkan hasil di sini.
Masuk untuk menandai latihan selesai.