Menu
CoddyTech

Kriteria ROWS & RANGE

Pelajaran 12 dari 13 dalam kursus SQL Tingkat Lanjut di Coddy.

Saat ini, kita belum bisa fleksibel dalam memilih jumlah baris sebelum atau sesudah yang diperhitungkan. Sekarang, hal itu bisa dilakukan dengan kriteria ROWS & RANGE. Untuk menggunakannya, tulis:

OVER (ROWS BETWEEN --START-- AND --END--)

OVER (RANGE BETWEEN --START-- AND --END--)

Kita bisa menentukan opsi berikut:

  • CURRENT ROW - baris saat ini
  • n PRECEDING - baris sebelum baris saat ini
  • n FOLLOWING - baris setelah baris saat ini 

Perbedaan antara ROWS & RANGE adalah kriteria ROWS tidak memperhitungkan nilai, hanya posisi, sedangkan RANGE menentukan window berdasarkan rentang nilai, bukan posisi baris.

Untuk RANGE, kita harus menentukan ORDER BY --column_name-- karena jika tidak, sistem tidak akan tahu cara memilih window.

Contohnya:

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING

Di sini, perintah tersebut membuat window yang mencakup baris saat ini, baris sebelumnya, dan baris sesudahnya.

 

RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ORDER BY levels

Di sini, perintah tersebut membuat window yang mencakup level saat ini, satu level sebelumnya, dan satu level sesudahnya untuk setiap level (diurutkan secara menaik). Jika level saat ini adalah 5, window akan mencakup level 4, 5, dan 6.

Catatan: Penggunaan RANGE BETWEEN mungkin menghasilkan lebih banyak baris yang tercakup dalam window-mu, karena opsi ini mencakup semua baris yang memiliki nilai sama dengan nilai dalam rentang tersebut, sedangkan ROWS BETWEEN akan selalu mencakup jumlah baris yang sama (selama baris tersebut tersedia dalam kumpulan data). 

Selain itu, RANGE tidak mendukung kolom tanggal.

challenge icon

Tantangan

Mudah

Untuk tantangan ini, kita memiliki koran untuk diproduksi. Kita ingin mengetahui rata-rata jumlah koran yang dicetak dua hari sebelum baris saat ini dan satu hari setelahnya. Kita juga ingin mengetahui selisih antara jumlah maksimum dan minimum koran yang dicetak mulai dari tanggal saat ini hingga tiga hari sebelumnya. Beri nama kolom-kolom ini avg_newspapers dan diff_newspapers secara berurutan.

Coba sendiri

Semua pelajaran di SQL Tingkat Lanjut

Latihan sendiri: Compiler Python online