Fungsi Jendela Nomor Baris MySQL

Mysql Row Number Window Function



Di dalam MySQL, metode ROW NUMBER() berisi nomor kronologis untuk setiap baris di dalam partisi. Ini hanya semacam fitur jendela. Angka baris dimulai pada 1 dengan angka baris dalam partisi. Ingat, sebelum versi 8.0, MySQL tidak mengizinkan fungsi ROW NUMBER() namun, ia menawarkan variabel sesi yang membantu seseorang meniru fitur ini. Kami akan memahami lebih lanjut tentang fungsionalitas MySQL ROW NUMBER() di seluruh panduan ini dan menghasilkan nomor berurutan untuk setiap baris dalam kumpulan hasil. Di MySQL, metode ROW_NUMBER() digunakan dengan klausa berikut:

  • Klausa Over() akan digunakan di dalamnya.
  • Klausa ORDERS BY mengatur hasil sesuai dengan urutan pengurutan kolom tersebut.

Sintaksis:

>> PILIH col_name,ROW_NUMBER()LEBIH( PARTISI OLEH col_name, DIPESAN OLEH col_name) SEBAGAI baris_num DARI nama_tabel;

Mari kita buka shell klien baris perintah MySQL dari aplikasi dan ketik kata sandi untuk masuk.









Anda harus membuat tabel baru atau menggunakan tabel default untuk mulai mengerjakan fungsi nomor baris. Seperti yang disajikan pada gambar di bawah ini, kami memiliki tabel hewan dalam data skema dengan beberapa catatan di dalamnya. Mari kita ambil record-nya menggunakan instruksi SELECT.



>> PILIH * DARI data .hewan;





Contoh 01: ROW_NUMBER() Menggunakan ORDER BY Clause

Kami akan menggunakan tabel yang sama untuk menguraikan beberapa contoh fungsi nomor baris. Kami mengambil contoh fungsi ROW_NUMBER() diikuti oleh Over(), sementara hanya menggunakan klausa ORDER BY. Kami telah mengambil semua catatan sambil memberi nomor baris sesuai dengan urutan kolom Harga. Kami telah memberikan nama row_num ke kolom, yang akan menyimpan nomor baris. Mari kita coba perintah di bawah ini untuk melakukannya.

>> PILIH *,ROW_NUMBER()LEBIH( DIPESAN OLEH Harga) SEBAGAI baris_num DARI data .hewan;

Saat menjalankan kueri di atas, kita dapat melihat bahwa baris telah diberi nomor sesuai dengan urutan pengurutan kolom Harga. Anda mungkin berpikir bahwa beberapa harga yang lebih kecil harus berada di bagian atas kolom dan harus diurutkan berdasarkan itu. Tetapi klausa ORDER BY hanya melihat digit pertama atau alfabet kolom untuk mengurutkan nilai.



Mari kita jalankan kueri yang sama diikuti oleh klausa ORDER BY sambil menggunakan urutan pengurutan kolom Age. Output akan diberikan sesuai dengan kolom Age.

>> PILIH *,ROW_NUMBER()LEBIH( DIPESAN OLEH Usia) SEBAGAI baris_num DARI data .hewan;

Contoh 02: ROW_NUMBER() Menggunakan PARTITION BY Clause

Kami akan menggunakan satu-satunya klausa PARTITION BY dalam kueri ROW_NUMBER() untuk memeriksa hasilnya. Kami telah menggunakan kueri SELECT untuk mengambil catatan yang diikuti oleh klausa ROW_NUMBER() dan OVER, sambil mempartisi tabel menurut kolom Warna. Jalankan perintah yang ditambahkan di bawah ini di shell perintah.

>> PILIH *,ROW_NUMBER()LEBIH( PARTISI MENURUT Warna) SEBAGAI baris_num DARI data .hewan;

Anda dapat melihat pada hasil bahwa penomoran baris telah ditetapkan dalam partisi, sesuai dengan urutan pengurutan warna. Karena kami memiliki 4 nilai untuk warna Hitam yang mengambil 4 baris. Itu sebabnya ia memiliki nomor empat baris mulai dari 1 hingga 4 dan sebaliknya.

Coba contoh yang sama, kali ini dipartisi oleh kolom Gender. Seperti yang kita ketahui, kita hanya memiliki dua jenis kelamin dalam tabel ini, makanya akan terbentuk 2 partisi. Betina menempati 9 baris, makanya baris bernomor 1 sampai 9. Sedangkan laki-laki memiliki 8 nilai, makanya ada 1 sampai 8.

>> PILIH *,ROW_NUMBER()LEBIH( PARTISI MENURUT Jenis Kelamin) SEBAGAI baris_num DARI data .hewan;

Contoh 03: ROW_NUMBER() Menggunakan PARTITION BY & ORDER BY

Kami telah melakukan dua contoh di atas di baris perintah MySQL, sekarang saatnya untuk melakukan contoh ROW_NUMBER() di MySQL Workbench 8.0. Jadi, buka MySQL Workbench 8.0 dari aplikasi. Hubungkan MySQL Workbench dengan database root host lokal untuk mulai bekerja.

Di sisi kiri MySQL Workbench, Anda akan menemukan bilah Skema, tiup navigator. Di bilah Skema ini, Anda akan menemukan daftar basis data. Di bawah daftar database, Anda akan memiliki tabel dan prosedur tersimpan yang berbeda, seperti yang Anda lihat pada gambar di bawah. Kami memiliki tabel yang berbeda dalam 'data' database kami. Kami akan membuka tabel 'order1' menggunakan perintah SELECT di area kueri untuk mulai menggunakannya untuk implementasi fungsi ROW_NUMBER().

>> PILIH * DARI data .pesan1;

Tabel order1 telah ditampilkan dalam tampilan grid seperti yang ditunjukkan di bawah ini. Anda dapat melihatnya memiliki 4 bidang kolom, id, Region, Status, dan OrderNo. Kami akan mengambil semua catatan tabel ini saat menggunakan klausa ORDER BY dan PARTITION BY, keduanya secara bersamaan.

Di area kueri MySQL Workbench 8.0, ketikkan kueri yang ditampilkan di bawah ini. Kueri telah dimulai dengan klausa SELECT, mengambil semua record yang diikuti oleh fungsi ROW_NUMBER() bersama dengan klausa OVER. Setelah klausa OVER, kami telah menentukan kolom Status dilanjutkan dengan pernyataan PARTITION BY untuk membagi tabel menjadi partisi sesuai dengan tabel ini. Klausa ORDER BY digunakan untuk mengatur tabel secara descending sesuai dengan kolom Region. Nomor baris akan disimpan di kolom row_num. Ketuk ikon flash untuk menjalankan perintah ini.

Hasil yang ditampilkan di bawah ini akan ditampilkan. Pertama-tama, tabel telah dipisahkan menjadi dua bagian sesuai dengan nilai kolom Status. Setelah itu, telah disajikan dalam urutan kolom 'Wilayah' dan partisi telah ditetapkan dengan nomor baris.

Kesimpulan:

Akhirnya, kami telah menyelesaikan semua contoh yang diperlukan dalam menggunakan fungsi ROW_NUMBER() di MySQL Workbench dan MySQL Command-line Client Shell.