Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Cara Menomori Baris dalam SQL

Masalah:

Anda ingin memberi setiap baris dalam tabel hasil nomor terpisah.

Contoh:

Basis data kami memiliki tabel bernama furniture dengan data pada kolom berikut:code (kunci utama) dan name .

kode nama
101 tempat tidur
202 sofa
333 kursi
123 rak buku
235 tabel
766 meja

furniture table menyimpan nama furniture yang ingin kita beri nomor.

Solusi:

SELECT ROW_NUMBER() OVER() AS num_row,
  code, 
  name
FROM furniture;

Kueri mengembalikan nomor baris setiap perabot beserta nama dan kodenya:

num_row nama kode
1 tempat tidur 101
2 sofa 202
3 kursi 333
4 rak buku 123
5 tabel 235
6 meja 766

Perhatikan bahwa nama furnitur tidak diurutkan.

Diskusi:

Jika Anda ingin memberi nomor pada setiap baris dalam kumpulan hasil, SQL menyediakan ROW_NUMBER() fungsi. Fungsi ini digunakan dalam SELECT klausa dengan kolom lainnya. Setelah ROW_NUMBER() klausa, kita sebut OVER() fungsi. Jika Anda memberikan argumen apa pun ke OVER , penomoran baris tidak akan diurutkan menurut kolom mana pun. Dengan demikian, urutan baris yang ditampilkan akan menjadi non-deterministik; dalam kebanyakan kasus, ini adalah urutan di mana catatan dimasukkan ke dalam tabel. Penomoran baris dimulai dari 1. Dalam contoh kita, setiap record memiliki nomor dari 1 hingga 6.

Kami juga dapat menetapkan nomor baris menggunakan kolom. Pada contoh di bawah ini, kami memberi nomor pada record yang diurutkan berdasarkan nama. Kami melakukan ini dengan meneruskan argumen itu ke OVER bersama dengan ORDER BY (ini mengurutkan catatan menurut kolom nama):

SELECT ROW_NUMBER() OVER(ORDER BY name) AS num_row,
  name, 
  code
FROM furniture;

Saat Anda melihat kumpulan hasil, Anda melihat baris yang diurutkan dengan nomornya:

baris nama kode
1 tempat tidur 101
2 rak buku 123
3 kursi 333
4 meja 766
5 sofa 202
6 tabel 235

Penomoran diberikan oleh ROW_NUMBER() tidak tergantung pada urutan baris dalam tabel hasil. Pada contoh di bawah, kami memberi nomor pada record menggunakan nama kolom yang diurutkan (OVER(ORDER BY name) ), tetapi kami menampilkan catatan dalam kumpulan hasil menurut kolom lain (dalam contoh kami, ORDER BY code ).

SELECT ROW_NUMBER() OVER(ORDER BY name) AS num_row,
  name, 
  code
FROM furniture
ORDER BY code;

Kueri mengembalikan nomor setiap baris, tetapi nomor ini tidak dalam urutan menaik, karena catatan diurutkan menurut kode kolom:

baris nama kode
1 tempat tidur 101
2 rak buku 123
5 sofa 202
6 tabel 235
3 kursi 333
4 meja 766

Urutan default dari baris yang diurutkan adalah menaik, tetapi Anda juga dapat mengurutkan dalam urutan menurun menggunakan DESC kata kunci setelah nama kolom yang ingin Anda urutkan:

SELECT ROW_NUMBER() OVER(ORDER BY name ASC) AS num_row,
  name, 
  code
FROM furniture
ORDER BY code DESC;

Kueri di atas mengembalikan kumpulan hasil:

baris nama kode
4 meja 766
3 kursi 333
6 tabel 235
5 sofa 202
2 rak buku 123
1 tempat tidur 101

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Beverly Hills 90210 dan ZIP+4:Menangani Alamat dalam Model Data

  2. Overhead pelacakan pembuatan tabel #temp

  3. Membuat Tabel Baru di IRI Workbench

  4. Apa itu NoSQL dan Bagaimana Cara Memanfaatkannya?

  5. Penyaringan Tabel di Meja Kerja IRI