Materi
Fungsi agregat biasa seperti SUM, AVG, COUNT, MIN, dan MAX berubah menjadi window function begitu diberi OVER. SUM(masuk) OVER (ORDER BY tanggal) menjumlahkan dari baris pertama sampai baris yang sedang dihitung, sehingga setiap baris menampilkan total berjalan: saldo kas setelah transaksi itu, atau capaian penjualan sejak awal bulan. OVER dengan kurung kosong menjadikan seluruh hasil satu kelompok tanpa urutan, dan itu cara menaruh total keseluruhan di samping setiap baris, misalnya untuk menghitung persentase.
SELECT tanggal, masuk,
SUM(masuk) OVER (ORDER BY tanggal) AS saldo,
AVG(masuk) OVER (ORDER BY tanggal ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS rata_3_hari
FROM kas_harian;Baris mana saja yang ikut dihitung ditentukan oleh frame. ROWS BETWEEN 2 PRECEDING AND CURRENT ROW berarti dua baris sebelumnya ditambah baris ini, yaitu rata-rata bergerak tiga baris; pada dua baris pertama frame-nya lebih pendek karena baris sebelumnya belum cukup. ROWS menghitung baris satu per satu. Bila frame tidak ditulis, SQLite memakai RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW: dari awal kelompok sampai baris ini, ditambah semua baris lain yang nilai ORDER BY-nya sama dengan baris ini. PARTITION BY tetap berlaku, sehingga total berjalan dapat dimulai ulang dari nol untuk setiap pelanggan atau setiap cabang.