Terkadang Anda mungkin perlu mendapatkan nomor baris di MySQL untuk pelaporan dan analisis. Nomor baris sangat berguna dalam pemeringkatan dan pengurutan data. Ini juga membantu dalam memfilter data berdasarkan nilai nomor baris. Dalam artikel ini, kita akan melihat cara mendapatkan row_number di MySQL.
Cara Mendapatkan row_number di MySQL
Fungsi Row_number() tersedia sejak MySQL 8.0.
Berikut adalah sintaks row_number() sintaksis. Harap diperhatikan, klausa PARTITION BY bersifat opsional.
ROW_NUMBER() OVER ( PARTITION BY <expression(s)> ORDER BY <expression(s)> [ASC|DESC])
Katakanlah Anda memiliki penjualan berikut ini tabel.
+------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-01 | 200 | | 2 | 2021-01-02 | 250 | | 3 | 2021-01-03 | 220 | | 4 | 2021-01-04 | 230 | | 5 | 2021-01-05 | 210 | | 6 | 2021-01-06 | 100 | | 7 | 2021-01-07 | 120 | | 8 | 2021-01-08 | 150 | | 9 | 2021-01-09 | 180 | | 10 | 2021-01-10 | 200 | +------+------------+--------+
Berikut adalah contoh penggunaan row_number berfungsi untuk memberi peringkat baris dalam urutan jumlah kolom.
mysql> select row_number() over ( order by amount desc) row_num, amount from sales order by amount desc; +---------+--------+ | row_num | amount | +---------+--------+ | 1 | 250 | | 2 | 230 | | 3 | 220 | | 4 | 210 | | 5 | 200 | | 6 | 200 | | 7 | 180 | | 8 | 150 | | 9 | 120 | | 10 | 100 | +---------+--------+
Dalam kueri di atas, kami memperlakukan seluruh tabel sebagai satu partisi dan tidak menyediakan klausa PARTITION BY. Kami juga mengurutkan baris ini dalam urutan menurun menurut kolom jumlah dan menggunakan row_number() berfungsi untuk memberi peringkat pada baris ini.
Namun, jika Anda menggunakan MySQL <8.0 maka berikut adalah langkah-langkah untuk mendapatkan row_number di MySQL.
mysql> SELECT t.*, @rownum := @rownum + 1 AS rank FROM sales t, (SELECT @rownum := 0) r order by amount desc; +------+---------------------+--------+------+ | id | order_date | amount | rank | +------+---------------------+--------+------+ | 1 | 2021-02-02 08:15:00 | 250 | 1 | | 10 | 2021-02-02 11:15:00 | 250 | 2 | | 5 | 2021-02-02 09:30:00 | 250 | 3 | | 9 | 2021-02-02 10:45:00 | 200 | 4 | | 12 | 2021-02-02 11:45:00 | 200 | 5 | | 6 | 2021-02-02 09:45:00 | 200 | 6 | | 2 | 2021-02-02 08:30:00 | 200 | 7 | | 7 | 2021-02-02 10:15:00 | 180 | 8 | | 3 | 2021-02-02 08:55:00 | 150 | 9 | | 11 | 2021-02-02 11:30:00 | 150 | 10 | | 4 | 2021-02-02 09:15:00 | 125 | 11 | | 8 | 2021-02-02 10:30:00 | 125 | 12 | +------+---------------------+--------+------+
Dalam kueri SQL di atas, kami menggunakan variabel sementara rownum untuk menyimpan nomor baris. Ketika MySQL secara berurutan melintasi baris, ia menetapkan rownum ke setiap baris secara bertahap.
Butuh alat pelaporan untuk MySQL? Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari Ini!