Klausa Bingkai: ROWS berbanding RANGE
Pilih antara klausa bingkai ROWS BETWEEN dan RANGE BETWEEN, serta fahami cara setiap satunya mengendalikan pendua dan jurang.
Klausa Bingkai: ROWS berbanding RANGE ialah pelajaran SQL Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran SQL Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Bingkai dalam OVER
Fungsi tetingkap menilai bingkai — subset baris daripada partisi. Bingkai ditentukan oleh:
OVER (
PARTITION BY ...
ORDER BY ...
ROWS BETWEEN <start> AND <end> -- or RANGE BETWEEN ...
)Bingkai Lalai
Jika anda menentukan ORDER BY tetapi tidak menentukan bingkai, nilai lalainya ialah:
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
-- "From the first row up to all rows tied with the current row".ROWS Mengira Secara Fizikal
ROWS mengira N baris mengikut susunan partisi, tanpa mengira 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 Mengira Mengikut Nilai
RANGE mengira baris yang nilainya untuk ORDER BY berada dalam julat sekitar nilai semasa:
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 Perbezaan Ini Penting
Jika terdapat jurang dalam data, ROWS dan RANGE memberikan jawapan yang berbeza:
-- 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 mengira kumpulan rakan setara (nilai yang sama untuk ORDER BY), bukannya baris individu:
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.Sempadan Bingkai
UNBOUNDED PRECEDING— baris pertama partisin PRECEDINGCURRENT ROWn FOLLOWINGUNBOUNDED FOLLOWING— baris terakhir
Jumlah Berjalan
Jumlah dari awal hingga baris ini:
SUM(x) OVER (ORDER BY day ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
-- Same as the default frame.Tetingkap Menjejak Ke Belakang
Purata menjejak ke belakang selama N hari:
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS avg_7dTetingkap Berpusat
Lihat ke kedua-dua arah:
AVG(revenue) OVER (
ORDER BY day
ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
) AS centred_7dKejutan LAST_VALUE
LAST_VALUE dengan bingkai lalai mengembalikan baris semasa, bukannya baris terakhir dalam partisi. Gunakan bingkai tidak terhad yang dinyatakan dengan jelas:
LAST_VALUE(name) OVER (
PARTITION BY group ORDER BY day
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)Klausa EXCLUDE (PG 11+)
Langkau 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.Rumusan
Klausa bingkai memberikan kawalan tepat terhadap tetingkap.
- ROWS — kiraan baris fizikal
- RANGE — selang berdasarkan nilai
- GROUPS — kumpulan rakan setara
- Bingkai lalai mungkin memberikan hasil yang tidak dijangka — nyatakannya dengan jelas
Semakan Ringkas
Anda mempunyai hasil harian dengan hari yang tiada data. Bingkai yang manakah memberikan anda "semua baris dalam tempoh 7 hari kalendar sebelum masa sekarang"?
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 46
- Pelajaran
- 183
Soalan Lazim
Adakah pelajaran “Klausa Bingkai: ROWS berbanding RANGE” percuma?
Ya — teks penuh “Klausa Bingkai: ROWS berbanding RANGE” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus SQL Academy, tingkat taraf kepada CoddyKit PRO. Kursus SQL Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Klausa Bingkai: ROWS berbanding RANGE”?
Pilih antara klausa bingkai ROWS BETWEEN dan RANGE BETWEEN, serta fahami cara setiap satunya mengendalikan pendua dan jurang. Anda berlatih SQL Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan SQL Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran SQL Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Klausa Bingkai: ROWS berbanding RANGE” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran SQL Academy ini?
Ya. Setiap pelajaran SQL Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Klausa Bingkai: ROWS berbanding RANGE
- Lag/Lead dengan Tetingkap Bingkai
- Pengumpulan Baldi dengan NTILE dan Cume_Dist
- Corak Pelaporan Dunia Sebenar