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

Pendahuluan dan klausa OVER

Pendahuluan dan Klausul OVER

Dalam pelajaran sebelumnya kita melihat cara menggunakan GROUP BY untuk menggabungkan data. Namun, GROUP BY memiliki batasan yang sangat besar: menciutkan baris. Jika Anda mengelompokkan berdasarkan kota, Anda mendapatkan satu baris per kota dan kehilangan detail masing-masing pelanggan.

Di sinilah Fungsi Jendela berperan. Mereka memungkinkan Anda menjalankan penghitungan agregat (seperti jumlah atau rata-rata) sambil mempertahankan baris asli.

Klausa OVER()

Kata kunci ajaibnya adalah OVER(). Ini memberitahu database bahwa fungsi agregat (misalnya SUM, AVG, COUNT) harus diperlakukan sebagai fungsi jendela, dihitung pada seluruh kumpulan hasil ("jendela" global) tetapi diterapkan dan dikembalikan pada setiap baris.

SQL
SELECT
  order_id,
  total_amount,
  AVG(total_amount) OVER() AS global_average
FROM orders;

Dalam contoh ini, kami menyimpan setiap pesanan individual, namun setiap baris juga memiliki kolom global_average dengan rata-rata dari semua pesanan. Sangat berguna, misalnya, untuk mengukur seberapa besar suatu pesanan menyimpang dari rata-rata!

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

Pilih kolom 'harga' dari tabel 'produk'. Tambahkan kolom bernama 'global_max_price' yang berisi harga maksimum yang dihitung dengan fungsi jendela di seluruh tabel.

Memuat editor…
Tunjukkan petunjuk

Gunakan MAX(harga) dikombinasikan dengan OVER().

Solusi tersedia setelah 3 upaya

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

Ekstrak 'id', 'price' dan tambahkan harga rata-rata keseluruhan ('global_avg') dari tabel 'produk'.

Memuat editor…
Tunjukkan petunjuk

Cukup tambahkan AVG(harga) OVER().

Solusi tersedia setelah 3 upaya