Klausa Bingkai: ROWS vs RANGE
Pilih antara klausa bingkai ROWS BETWEEN dan RANGE BETWEEN, serta pahami cara masing-masing menangani duplikasi dan celah
Klausa Bingkai: ROWS vs RANGE 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.
Bingkai di Dalam OVER
Fungsi jendela mengevaluasi sebuah bingkai — subset baris dari partisi. Bingkai ditentukan oleh:
OVER (
PARTITION BY ...
ORDER BY ...
ROWS BETWEEN <start> AND <end> -- or RANGE BETWEEN ...
)Bingkai Bawaan
Jika Anda menentukan ORDER BY tetapi tidak menentukan bingkai, nilai bawaannya adalah:
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-- "From the first row up to all rows tied with the current row".ROWS Menghitung Secara Fisik
ROWS menghitung N baris dalam urutan partisi, terlepas dari nilainya:
SUM(x) OVER (ORDER BY day ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
-- The current row plus the previous 2. Exactly 3 rows.RANGE Menghitung Berdasarkan Nilai
RANGE menghitung baris yang nilainya dalam ORDER BY berada dalam jendela nilai saat ini:
SUM(x) OVER (
ORDER BY day
RANGE BETWEEN INTERVAL '2 days' PRECEDING AND CURRENT ROW
)
-- All rows within 2 days (by calendar) of the current row.Mengapa Perbedaannya Penting
Jika terdapat celah dalam data, ROWS dan RANGE memberikan hasil yang berbeda:
-- Days: 1, 3, 5 (no 2 or 4)
-- ROWS BETWEEN 2 PRECEDING AND CURRENT ROW for day 5: rows 1,3,5 = 3 days
-- RANGE BETWEEN INTERVAL '2 days' PRECEDING for day 5: only days 3,5 = 2 daysBingkai GROUPS (PG 11+)
GROUPS menghitung kelompok sebaya (nilai yang sama pada ORDER BY), bukan baris satu per satu:
SUM(x) OVER (
ORDER BY tier
GROUPS BETWEEN 1 PRECEDING AND CURRENT ROW
)
-- "The current tier and the previous tier" — useful when ORDER BY has many ties.Batas Bingkai
UNBOUNDED PRECEDING— baris pertama partisin PRECEDINGCURRENT ROWn FOLLOWINGUNBOUNDED FOLLOWING— baris terakhir
Total Berjalan
Jumlahkan dari awal hingga baris ini:
SUM(x) OVER (ORDER BY day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
-- Same as the default frame.Jendela Mundur
Rata-rata mundur selama N hari:
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS avg_7dJendela Terpusat
Lihat ke kedua arah:
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
) AS centred_7dKejutan LAST_VALUE
LAST_VALUE dengan bingkai bawaan mengembalikan baris saat ini, bukan baris terakhir dalam partisi. Gunakan bingkai tak terbatas yang ditentukan secara eksplisit:
LAST_VALUE(name) OVER (
PARTITION BY group ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)Klausa EXCLUDE (PG 11+)
Lewati baris tertentu dalam bingkai:
SUM(x) OVER (
ORDER BY day
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
EXCLUDE CURRENT ROW
)
-- All previous 6 days but not today.Ringkasan
Klausa bingkai memberikan kendali yang tepat atas jendela.
- ROWS — jumlah baris fisik
- RANGE — interval berdasarkan nilai
- GROUPS — kelompok sebaya
- Bingkai bawaan dapat mengejutkan Anda — tentukan secara eksplisit
Pemeriksaan Singkat
Anda memiliki pendapatan harian dengan hari yang hilang. Bingkai mana yang menghasilkan "semua baris dalam 7 hari kalender sebelum sekarang"?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Klausa Bingkai: ROWS vs RANGE” gratis?
Ya — teks lengkap “Klausa Bingkai: ROWS vs RANGE” 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 “Klausa Bingkai: ROWS vs RANGE”?
Pilih antara klausa bingkai ROWS BETWEEN dan RANGE BETWEEN, serta pahami cara masing-masing menangani duplikasi dan celah 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 “Klausa Bingkai: ROWS vs RANGE” 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
- Klausa Bingkai: ROWS vs RANGE
- Lag/Lead dengan Jendela Bingkai
- Pengelompokan dengan NTILE dan Cume_Dist
- Pola Pelaporan di Dunia Nyata