PostgreSQL memungkinkan Anda mendapatkan nomor baris tertentu untuk data Anda untuk peringkat, pelaporan, dan analisis data. Berikut cara mendapatkan nomor baris di PostgreSQL. Anda dapat menggunakannya untuk analisis lebih lanjut berdasarkan ID baris di PostgreSQL.
Cara Mendapatkan Nomor Baris di PostgreSQL
Berikut cara mendapatkan nomor baris tertentu di PostgreSQL. Kita akan melihat cara mendapatkan nomor baris menggunakan fungsi jendela ROW_NUMBER() yang tersedia di PostgreSQL 8.4+ serta menggunakan SQL biasa untuk PostgreSQL <8.4.
Katakanlah Anda memiliki tabel berikut penjualan(tanggal_pesanan,penjualan)
postgres=# create table sales(order_date date,sale int); postgres=# insert into sales values('2020-04-01',210), ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230), ('2020-04-05',200),('2020-04-10',220),('2020-04-06',25), ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250); postgres=# select * from sales; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 25 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Bonus Baca :Cara Menghitung Persentil di PostgreSQL
Cara Mendapatkan Nomor Baris di PostgreSQL menggunakan ROW_NUMBER()
Sejak PostgreSQL 8.4, Anda dapat dengan mudah menampilkan nomor baris di PostgreSQL menggunakan fungsi ROW_NUMBER(). Berikut query SQL untuk mendapatkan id baris di PostgreSQL.
postgres=# select row_number() over(), * from sales; row_number | order_date | sale ------------+------------+------ 1 | 2020-04-01 | 210 2 | 2020-04-02 | 125 3 | 2020-04-03 | 150 4 | 2020-04-04 | 230 5 | 2020-04-05 | 200 6 | 2020-04-10 | 220 7 | 2020-04-06 | 25 8 | 2020-04-07 | 215 9 | 2020-04-08 | 300 10 | 2020-04-09 | 250
Dalam kueri SQL di atas, kami menggunakan fungsi jendela row_number() untuk menghasilkan nomor baris untuk setiap baris. Kami juga menggunakan over() untuk memberi tahu PostgreSQL agar menampilkan nomor baris untuk semua baris tanpa urutan apa pun.
Bonus Baca :Cara Menghitung Median di PostgreSQL
Jika Anda ingin mengurutkan baris sebelum membuat nomor baris, Anda dapat menambahkan klausa ORDER BY di OVER(), seperti yang ditunjukkan di bawah ini
postgres=# select row_number() over(order by sale), * from sales; row_number | order_date | sale ------------+------------+------ 1 | 2020-04-06 | 25 2 | 2020-04-02 | 125 3 | 2020-04-03 | 150 4 | 2020-04-05 | 200 5 | 2020-04-01 | 210 6 | 2020-04-07 | 215 7 | 2020-04-10 | 220 8 | 2020-04-04 | 230 9 | 2020-04-09 | 250 10 | 2020-04-08 | 300
Anda tidak dapat menggunakan klausa WHERE dalam fungsi jendela ROW_NUMBER atau OVER(). Jadi jika Anda ingin memfilter data sebelum menghasilkan nomor baris, Anda perlu menggunakan WHERE cause dalam subquery, seperti yang ditunjukkan di bawah ini
postgres=# select row_number() over(order by sale), * from ( select * from sales where sale>100) filtered_sales; row_number | order_date | sale ------------+------------+------ 1 | 2020-04-02 | 125 2 | 2020-04-03 | 150 3 | 2020-04-05 | 200 4 | 2020-04-01 | 210 5 | 2020-04-07 | 215 6 | 2020-04-10 | 220 7 | 2020-04-04 | 230 8 | 2020-04-09 | 250 9 | 2020-04-08 | 300
Anda juga bisa mendapatkan nomor baris di PostgreSQL menggunakan generate_series. Namun, disarankan untuk tidak membuat id baris menggunakan generate_series karena tidak terukur.
Bonus Baca :Cara Mengisi Tanggal Hilang di PostgreSQL menggunakan generate_series
Cara mendapatkan nomor baris di PostgreSQL (<8.4) tanpa ROW_NUMBER()
Jika Anda menggunakan PostgreSQL <8.4, maka row_number() fungsi jendela mungkin tidak tersedia di dalamnya. Dalam hal ini, Anda harus mendapatkan nomor baris di PostgreSQL dengan bantuan self-join. Ini dia kuerinya.
postgres=# SELECT count(*) rownum, foo.* FROM sales foo JOIN sales bar ON (foo.order_date <= bar.order_date) GROUP BY foo.order_date, foo.sale ORDER BY rownum ; rownum | order_date | sale --------+------------+------ 1 | 2020-04-10 | 220 2 | 2020-04-09 | 250 3 | 2020-04-08 | 300 4 | 2020-04-07 | 215 5 | 2020-04-06 | 25 6 | 2020-04-05 | 200 7 | 2020-04-04 | 230 8 | 2020-04-03 | 150 9 | 2020-04-02 | 125 10 | 2020-04-01 | 210
Setelah Anda mendapatkan nomor baris di PostgreSQL, Anda dapat menggunakan alat pelaporan PostgreSQL untuk melaporkan data Anda dalam tabel seperti yang ditunjukkan di bawah ini, dan berbagi dengan tim Anda.
Jika Anda ingin membuat grafik, dasbor &laporan dari database PostgreSQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.