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.
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.
Dari tabel 'produk', ekstrak 'id', 'id_kategori', dan 'harga'. Tambahkan kolom 'category_total' yang menghitung SUM 'price' untuk setiap 'category_id' menggunakan fungsi jendela.
Tunjukkan petunjuk
Gunakan SUM(harga) OVER(PARTISI OLEH kategori_id).
Solusi tersedia setelah 3 upaya
Dari tabel 'ulasan', tampilkan 'id_produk', 'peringkat', dan 'peringkat_produk_rata-rata' (peringkat rata-rata yang dipartisi berdasarkan produk). Tampilkan semua baris.
Tunjukkan petunjuk
Gunakan AVG(peringkat) dan PARTITION BY product_id. Transmisikan ke NUMERIK jika diperlukan.
Solusi tersedia setelah 3 upaya