Lompati ke konten utama
Modul 13 · Pelajaran 2 dari 450/57 dalam kursus~15 min
Pelajaran modul (2/4)

Pengelompokan dengan PARTISI BY

Pengelompokan dengan PARTITION BY

Memiliki perhitungan global pada setiap baris memang berguna, namun seringkali itu tidak cukup. Kita mungkin ingin menghitung rata-rata per kategori atau per pelanggan, sambil mempertahankan detail asli di setiap baris.

Di sinilah PARTITION BY di dalam klausa OVER(...) berperan.

Cara kerja PARTISI BY

Secara konseptual, perilakunya serupa dengan GROUP BY, namun alih-alih menciutkan baris pada hasil, ia hanya mendefinisikan batas "jendela" data tempat fungsi akan beroperasi untuk menghitung hasil pada baris tunggal.

SQL
SELECT
  product_name,
  category_id,
  price,
  AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;

Setiap baris produk menyimpan detailnya sendiri, dan kolom cat_avg_price akan menampilkan rata-rata terbatas pada produk dalam kategori yang sama.

Latihan#sql.m13.l2.e1
Upaya: 0Memuat…

Dari tabel 'produk', ekstrak 'id', 'id_kategori', dan 'harga'. Tambahkan kolom 'category_total' yang menghitung SUM 'price' untuk setiap 'category_id' menggunakan fungsi jendela.

Memuat editor…
Tunjukkan petunjuk

Gunakan SUM(harga) OVER(PARTISI OLEH kategori_id).

Solusi tersedia setelah 3 upaya

Latihan#sql.m13.l2.e2
Upaya: 0Memuat…

Dari tabel 'ulasan', tampilkan 'id_produk', 'peringkat', dan 'peringkat_produk_rata-rata' (peringkat rata-rata yang dipartisi berdasarkan produk). Tampilkan semua baris.

Memuat editor…
Tunjukkan petunjuk

Gunakan AVG(peringkat) dan PARTITION BY product_id. Transmisikan ke NUMERIK jika diperlukan.

Solusi tersedia setelah 3 upaya