Lompat ke konten utama

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

←

SQL untuk Gudang Data

Pelajaran 15 dari 16

Analitik di atas skema bintang

Kueri analitik: perubahan, peringkat, dan kontribusi

Setelah pelajaran ini kamu bisa menerapkan window function pada hasil ringkasan skema bintang untuk menghitung perubahan antarperiode, peringkat dalam kelompok, dan kontribusi terhadap total.

±13 menitDiperiksa 3 Okt 2026

Materi

Window function sudah diajarkan di kelas SQL Lanjutan. Di gudang data, fungsi ini hampir selalu dipasang di atas ringkasan, bukan langsung di tabel fakta: ringkas dulu ke periode atau anggota yang ditanyakan dengan kueri bintang di sebuah CTE, lalu terapkan OVER pada hasilnya. Dokumentasi PostgreSQL menjelaskan bahwa window function dihitung setelah pengelompokan, agregasi, dan HAVING, sehingga yang dilihatnya adalah baris kelompok. Satu kueri pun bisa memuat SUM(...) OVER () di atas SUM yang dikelompokkan, tetapi pemisahan dengan CTE membuat tahapnya terbaca.

Tiga pola paling sering muncul. Perubahan antarperiode memakai LAG untuk mengambil nilai periode sebelumnya pada urutan waktu dari dimensi tanggal. Peringkat dalam kelompok memakai RANK dengan PARTITION BY atribut dimensi, misalnya kategori. Kontribusi terhadap total membagi nilai setiap baris dengan SUM(...) OVER () tanpa partisi, yang menghasilkan total seluruh baris di setiap baris.

-- Kafe: perubahan jumlah cangkir dari minggu ke minggu
WITH mingguan AS (
  SELECT t.minggu_ke, SUM(f.cangkir) AS cangkir
  FROM fakta_pesanan_kafe f JOIN dim_tanggal t ON t.tanggal_key = f.tanggal_key
  GROUP BY t.minggu_ke
)
SELECT minggu_ke, cangkir,
       cangkir - LAG(cangkir) OVER (ORDER BY minggu_ke) AS perubahan
FROM mingguan;

Peringkat yang hanya menampilkan beberapa teratas per kelompok butuh satu lapis lagi, karena hasil window function tidak bisa disaring di WHERE kueri yang sama. Hitung peringkat di CTE, lalu saring di SELECT luar.

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 1 lagi