PARTITION BY
klausa menetapkan rentang catatan yang akan digunakan untuk setiap "GROUP" dalam OVER
klausa.
Dalam contoh SQL Anda, DEPT_COUNT
akan mengembalikan jumlah karyawan dalam departemen itu untuk setiap catatan karyawan. (Seolah-olah Anda mende-nomalisasi emp
meja; Anda masih mengembalikan setiap catatan di emp
tabel.)
emp_no dept_no DEPT_COUNT
1 10 3
2 10 3
3 10 3 <- three because there are three "dept_no = 10" records
4 20 2
5 20 2 <- two because there are two "dept_no = 20" records
Jika ada kolom lain (mis., state
) maka Anda dapat menghitung berapa banyak departemen di Negara Bagian tersebut.
Ini seperti mendapatkan hasil dari GROUP BY
(SUM
, AVG
, dll.) tanpa menggabungkan kumpulan hasil (yaitu menghapus catatan yang cocok).
Ini berguna saat Anda menggunakan LAST OVER
atau MIN OVER
berfungsi untuk mendapatkan, misalnya, gaji terendah dan tertinggi di departemen dan kemudian menggunakannya dalam perhitungan terhadap catatan ini gaji tanpa sub pilih, yang jauh lebih cepat.
Baca artikel AskTom tertaut untuk detail lebih lanjut.