OVER, PARTITION BY, ORDER BY
Pahami model fungsi jendela: OVER, PARTITION BY (kelompok), ORDER BY (urutan), serta perbedaannya dengan GROUP BY.
OVER, PARTITION BY, ORDER BY adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Apa Itu Fungsi Jendela?
Fungsi jendela menghitung nilai di seluruh sekumpulan baris yang terkait dengan baris saat ini — tanpa menggabungkan hasil seperti yang dilakukan GROUP BY. Anda tetap mendapatkan setiap baris DAN kolom agregat.
Contoh Dasar
Rata-rata total pesanan di seluruh tabel, pada setiap baris:
SELECT id, total,
AVG(total) OVER () AS avg_total
FROM orders;Klausa OVER
Klausa OVER (...) menentukan jendela. Tanda kurung kosong berarti "seluruh kumpulan hasil".
SELECT id, total,
SUM(total) OVER () AS grand_total
FROM orders;PARTITION BY: Mengelompokkan Jendela
Seperti GROUP BY, tetapi baris tidak digabungkan:
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id) AS user_total
FROM orders;
-- Every order keeps its row; user_total is the same for all of one user's orders.ORDER BY dalam Jendela
ORDER BY di dalam OVER menentukan urutan baris untuk perhitungan berjalan:
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id ORDER BY created_at) AS running_total
FROM orders;
-- Running total per user, ordered by date.Jendela vs GROUP BY
Perbandingan berdampingan:
-- GROUP BY: 1 row per user
SELECT user_id, SUM(total) FROM orders GROUP BY user_id;
-- Window: 1 row per order, with user total alongside
SELECT id, user_id, total,
SUM(total) OVER (PARTITION BY user_id)
FROM orders;Setiap Baris, Bingkai Berbeda
"Bingkai" adalah sekumpulan baris dalam partisi yang dilihat oleh fungsi. Bingkai bawaan dengan ORDER BY adalah "dari awal hingga baris saat ini" — inilah yang menghasilkan total berjalan.
Jendela Bernama
Jika beberapa fungsi menggunakan jendela yang sama, beri nama sekali:
SELECT id, user_id, total,
SUM(total) OVER w AS running_sum,
AVG(total) OVER w AS running_avg
FROM orders
WINDOW w AS (PARTITION BY user_id ORDER BY created_at);Sebagian Besar Agregat Dapat Digunakan sebagai Fungsi Jendela
COUNT, SUM, AVG, MIN, MAX — semuanya dapat digunakan pada jendela. Fungsi jendela khusus menambahkan ROW_NUMBER, RANK, LAG/LEAD, NTILE, dan lainnya.
Fungsi Jendela Berjalan Setelah WHERE
Urutan logis: FROM → WHERE → GROUP BY → HAVING → window functions → SELECT → ORDER BY → LIMIT. Jadi WHERE menyaring data sebelum jendela dihitung.
Pertimbangan Kinerja
Fungsi jendela memerlukan pengurutan (atau hash). Untuk partisi besar, indeks pada kolom (partisi, urutan) menghindari langkah pengurutan.
Ringkasan
Fungsi jendela menambahkan nilai agregat per baris.
- OVER () = seluruh hasil
- PARTITION BY = mengelompokkan jendela
- ORDER BY dalam jendela = mengaktifkan perhitungan berjalan
Pemeriksaan Singkat
Apa yang dihitung oleh SUM(x) OVER (PARTITION BY user_id)?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “OVER, PARTITION BY, ORDER BY” gratis?
Ya — teks lengkap “OVER, PARTITION BY, ORDER BY” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “OVER, PARTITION BY, ORDER BY”?
Pahami model fungsi jendela: OVER, PARTITION BY (kelompok), ORDER BY (urutan), serta perbedaannya dengan GROUP BY. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “OVER, PARTITION BY, ORDER BY” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- OVER, PARTITION BY, ORDER BY
- ROW_NUMBER, RANK, DENSE_RANK
- LAG, LEAD, dan Pola Deret Waktu
- Total Berjalan dan Rata-Rata Bergerak