Belajar SQL ROW NUMBER: Fungsi, Cara, dan Contoh

Yuk, pelajari fungsi, cara, dan contoh penggunaan SQL ROW NUMBER di artikel ini!
RevoU Staff
August 14, 2024
August 14, 2024
3
min read

Mau Belajar

Data Analytics

?

Belajar di RevoU! Dapatkan skill digital paling in-demand langsung dari praktisi terbaik di bidangnya. Kelas online 100% LIVE, 1:1 career coaching, dan akses ke Community Hub dengan 6000+ member selamanya untuk support perkembangan karir kamu!
DAFTAR FULL PROGRAMCOBA COURSE GRATIS

Overview

Fungsi ROW_NUMBER() dalam SQL digunakan untuk memberikan nomor urut yang unik untuk setiap baris dalam hasil query berdasarkan kriteria pengurutan tertentu. Hal ini memungkinkan agar lebih mudah melakukan analisis dan pengelolaan data dalam kumpulan yang besar dan beragam.

Bayangkan kamu berada di sebuah lomba lari maraton dengan ribuan pelari lainnya. Setiap pelari, termasuk kamu, diberikan nomor dada yang unik untuk mengidentifikasi posisi masing-masing dalam perlombaan.

Dalam pengelolaan data, SQL menggunakan metode serupa melalui fungsi ROW_NUMBER() untuk memberikan "nomor dada" kepada setiap baris data. Selain menandai posisi data dalam urutan yang telah ditentukan, fungsi ini juga membantu menyeleksi dan mengatur data dengan lebih efisien.

Selain itu, ROW_NUMBER() biasanya digunakan bersamaan dengan klausa OVER(), memungkinkan partisi data untuk pemberian nomor yang akurat berdasarkan perbedaan dalam kolom tertentu.

ROW_NUMBER() SQL memberikan kemudahan untuk melacak dan mengelola data dalam database yang kompleks. Artikel ini akan membimbing kamu melalui pengertian, kegunaan, dan cara mengimplementasikan ROW_NUMBER() di SQL. Simak selengkapnya!

Kegunaan ROW_NUMBER di SQL

Berikut beberapa kegunaan ROW_NUMBER di SQL:

  • Pemberian nomor urut: ROW_NUMBER sering digunakan untuk memberikan nomor urut sementara pada hasil query. Hal ini memudahkan dalam melacak posisi setiap baris dalam sebuah kumpulan data.
  • Pengurutan data: dengan ROW_NUMBER, kamu bisa mengurutkan data berdasarkan satu atau lebih kolom. Misalnya, mengurutkan data penjualan berdasarkan tanggal atau jumlah penjualan.
  • Pembagian data dalam halaman: saat menampilkan data dalam jumlah besar, ROW_NUMBER membantu pembagian data ke dalam halaman (pagination). Ini membantu untuk melihat sebagian data pada satu waktu.
  • Penyaringan data spesifik: dengan menetapkan kondisi pada nomor urut yang dihasilkan, kamu bisa menyaring dan hanya menampilkan baris tertentu. Contohnya, menampilkan hanya 10 baris pertama dari keseluruhan data.
  • Analisis data lebih lanjut: ROW_NUMBER dapat dipakai untuk analisis lebih lanjut, seperti dalam pengidentifikasian duplikat, untuk melihat perubahan ranking atau posisi data terhadap waktu. Fungsi ini biasa digunakan bersamaan dengan klausa OVER().

Sintaks ROW_NUMBER di SQL

Inilah struktur umum dari sintaks ROW_NUMBER():

  • PARTITION BY: bagian ini opsional. Digunakan untuk membagi hasil query ke dalam kelompok atau partisi berdasarkan satu atau lebih kolom. ROW_NUMBER akan memulai penghitungan baru untuk setiap partisi.
  • ORDER BY: bagian ini harus diisi, menentukan urutan nomor baris berdasarkan satu atau lebih kolom. Pengurutan bisa dilakukan secara ascending (naik) atau descending (turun).
  • nama_alias_urutan: ini adalah nama alias untuk kolom yang akan menampilkan nomor urut. Alias digunakan untuk memudahkan referensi kolom hasil dalam query.

Cara dan Contoh Menggunakan ROW_NUMBER di SQL

Untuk memahami penggunaan ROW_NUMBER, kita akan menggunakan contoh dataset berikut:

Kita ingin menentukan urutan penjualan produk berdasarkan jumlah yang terjual, dari yang tertinggi ke yang terendah. Caranya: 

  • Tentukan kolom yang akan digunakan sebagai dasar pengurutan. Dalam contoh ini, kita akan menggunakan kolom Jumlah.
  • Gunakan ROW_NUMBER() dalam klausa SELECT, dengan menentukan ORDER BY kolom Jumlah secara descending untuk mendapatkan urutan dari jumlah terbesar ke terkecil.

Contoh query:

Output:

Contoh lain adalah menggunakan PARTITION.

Kita akan memberikan nomor urut dalam penjualan produk dengan PARTITION BY Nama_Produk untuk membagi dataset berdasarkan nama produk sebelum memberikan nomor urut berdasarkan jumlah dari yang terbesar.

Output:

FAQ (Frequently Ask Questions)

Apa perbedaan antara ROW_NUMBER(), RANK(), dan DENSE_RANK()?

ROW_NUMBER(), RANK(), dan DENSE_RANK() dalam SQL digunakan untuk memberikan nomor urut pada hasil query. Namun, cara pengurutan dan aturan penomoran mereka berbeda.

  • ROW_NUMBER() secara konsisten memberikan setiap baris nomor yang berurutan, terlepas dari apakah beberapa baris memiliki nilai yang sama.
  • RANK() memberikan nomor sama untuk baris dengan nilai yang sama, lalu melanjutkan penghitungan dengan mempertimbangkan jumlah total baris dengan nilai yang sama sebelumnya.
  • DENSE_RANK() memberikan nomor sama untuk nilai yang sama tanpa melompati angka untuk nomor berikutnya, sehingga menghasilkan urutan yang lebih "padat".

Bagaimana ROW_NUMBER bekerja dengan GROUP BY?

Memahami bagaimana ROW_NUMBER bekerja dengan GROUP BY dalam SQL memang sedikit tricky, karena kedua fungsi tersebut memiliki tujuan berbeda dan biasanya tidak digunakan bersamaan secara langsung dalam satu klausa.

  • GROUP BY dipakai untuk mengelompokkan baris yang memiliki nilai sama pada satu atau lebih kolom spesifik. Fungsi ini biasanya digunakan bersama dengan fungsi agregasi seperti SUM(), AVG(), atau COUNT() untuk menghitung atau menyimpulkan data dalam kelompok tersebut.
  • Sebagai window function, ROW_NUMBER memberikan nomor urut pada setiap baris dalam hasil query, berdasarkan urutan tertentu yang ditentukan.

Dikarenakan GROUP BY menghasilkan satu baris per grup berdasarkan fungsi agregasi, sementara ROW_NUMBER memerlukan baris individual untuk memberikan nomor urut, kamu biasanya perlu melakukan langkah tambahan seperti menggunakan subquery atau Common Table Expressions (CTEs). 

Bisakah ROW_NUMBER() digunakan pada semua database SQL?

ROW_NUMBER() adalah salah satu fungsi window yang tergolong dalam standar SQL yang lebih baru, dan sudah diadopsi oleh banyak database management system modern. Namun, ketersediaan dan implementasi spesifik bisa berbeda tergantung pada sistem database yang digunakan.

Berikut beberapa sistem database populer yang mendukung ROW_NUMBER():

  • SQL Server: Microsoft SQL Server telah mendukung ROW_NUMBER() sejak SQL Server 2005. Fungsi ini menjadi bagian penting dari kemampuan SQL Server untuk melakukan operasi kompleks pada dataset.
  • Oracle: Oracle mendukung ROW_NUMBER() mulai dari Oracle 9i Release 2. Ini merupakan bagian dari kemampuan analitik yang ditawarkan Oracle untuk pengolahan data.
  • PostgreSQL: PostgreSQL merupakan database management system yang mendukung fungsi window, termasuk ROW_NUMBER(), sejak versi 8.4 yang dirilis pada tahun 2009.
  • MySQL: MySQL mulai mendukung ROW_NUMBER() dan fungsi window lainnya mulai dari versi 8.0. Sebelum versi ini, MySQL tidak mendukung fungsi window secara asli.
  • SQLite: SQLite menambahkan dukungan untuk ROW_NUMBER() dan fungsi window lainnya sejak versi 3.25.0 yang dirilis pada September 2018.
RevoU Staff
Kickstart your career in tech with RevoU!

Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!

Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)

Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!

Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)

Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!

Rasakan pengalaman belajar di RevoU Full-Stack Program: Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion. Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)

Artikel Lainnya

Mau belajar

Data Analytics

?

Belajar di RevoU! Dapatkan skill digital paling in-demand langsung dari praktisi terbaik di bidangnya. Kelas online 100% LIVE, 1:1 career coaching, dan akses ke Community Hub dengan 6000+ member selamanya untuk support perkembangan karir kamu!
Daftar Isi

Mulai karirmu dalam

Data Analytics

Belajar di RevoU! Dapatkan skill digital paling in-demand langsung dari praktisi terbaik di bidangnya. Kelas online 100% LIVE, 1:1 career coaching, dan akses ke Community Hub dengan 6000+ member selamanya untuk support perkembangan karir kamu!

Mau Belajar

Data Analytics

?

Belajar di RevoU! Dapatkan skill digital paling in-demand langsung dari praktisi terbaik di bidangnya. Kelas online 100% LIVE, 1:1 career coaching, dan akses ke Community Hub dengan 6000+ member selamanya untuk support perkembangan karir kamu!

DAFTAR FULL PROGRAM

Mau Belajar

Data Analytics

?

Belajar SQL ROW NUMBER: Fungsi, Cara, dan Contoh

Yuk, pelajari fungsi, cara, dan contoh penggunaan SQL ROW NUMBER di artikel ini!
RevoU Staff
August 14, 2024
3
min read

Overview

Fungsi ROW_NUMBER() dalam SQL digunakan untuk memberikan nomor urut yang unik untuk setiap baris dalam hasil query berdasarkan kriteria pengurutan tertentu. Hal ini memungkinkan agar lebih mudah melakukan analisis dan pengelolaan data dalam kumpulan yang besar dan beragam.

Bayangkan kamu berada di sebuah lomba lari maraton dengan ribuan pelari lainnya. Setiap pelari, termasuk kamu, diberikan nomor dada yang unik untuk mengidentifikasi posisi masing-masing dalam perlombaan.

Dalam pengelolaan data, SQL menggunakan metode serupa melalui fungsi ROW_NUMBER() untuk memberikan "nomor dada" kepada setiap baris data. Selain menandai posisi data dalam urutan yang telah ditentukan, fungsi ini juga membantu menyeleksi dan mengatur data dengan lebih efisien.

Selain itu, ROW_NUMBER() biasanya digunakan bersamaan dengan klausa OVER(), memungkinkan partisi data untuk pemberian nomor yang akurat berdasarkan perbedaan dalam kolom tertentu.

ROW_NUMBER() SQL memberikan kemudahan untuk melacak dan mengelola data dalam database yang kompleks. Artikel ini akan membimbing kamu melalui pengertian, kegunaan, dan cara mengimplementasikan ROW_NUMBER() di SQL. Simak selengkapnya!

Kegunaan ROW_NUMBER di SQL

Berikut beberapa kegunaan ROW_NUMBER di SQL:

  • Pemberian nomor urut: ROW_NUMBER sering digunakan untuk memberikan nomor urut sementara pada hasil query. Hal ini memudahkan dalam melacak posisi setiap baris dalam sebuah kumpulan data.
  • Pengurutan data: dengan ROW_NUMBER, kamu bisa mengurutkan data berdasarkan satu atau lebih kolom. Misalnya, mengurutkan data penjualan berdasarkan tanggal atau jumlah penjualan.
  • Pembagian data dalam halaman: saat menampilkan data dalam jumlah besar, ROW_NUMBER membantu pembagian data ke dalam halaman (pagination). Ini membantu untuk melihat sebagian data pada satu waktu.
  • Penyaringan data spesifik: dengan menetapkan kondisi pada nomor urut yang dihasilkan, kamu bisa menyaring dan hanya menampilkan baris tertentu. Contohnya, menampilkan hanya 10 baris pertama dari keseluruhan data.
  • Analisis data lebih lanjut: ROW_NUMBER dapat dipakai untuk analisis lebih lanjut, seperti dalam pengidentifikasian duplikat, untuk melihat perubahan ranking atau posisi data terhadap waktu. Fungsi ini biasa digunakan bersamaan dengan klausa OVER().

Sintaks ROW_NUMBER di SQL

Inilah struktur umum dari sintaks ROW_NUMBER():

  • PARTITION BY: bagian ini opsional. Digunakan untuk membagi hasil query ke dalam kelompok atau partisi berdasarkan satu atau lebih kolom. ROW_NUMBER akan memulai penghitungan baru untuk setiap partisi.
  • ORDER BY: bagian ini harus diisi, menentukan urutan nomor baris berdasarkan satu atau lebih kolom. Pengurutan bisa dilakukan secara ascending (naik) atau descending (turun).
  • nama_alias_urutan: ini adalah nama alias untuk kolom yang akan menampilkan nomor urut. Alias digunakan untuk memudahkan referensi kolom hasil dalam query.

Cara dan Contoh Menggunakan ROW_NUMBER di SQL

Untuk memahami penggunaan ROW_NUMBER, kita akan menggunakan contoh dataset berikut:

Kita ingin menentukan urutan penjualan produk berdasarkan jumlah yang terjual, dari yang tertinggi ke yang terendah. Caranya: 

  • Tentukan kolom yang akan digunakan sebagai dasar pengurutan. Dalam contoh ini, kita akan menggunakan kolom Jumlah.
  • Gunakan ROW_NUMBER() dalam klausa SELECT, dengan menentukan ORDER BY kolom Jumlah secara descending untuk mendapatkan urutan dari jumlah terbesar ke terkecil.

Contoh query:

Output:

Contoh lain adalah menggunakan PARTITION.

Kita akan memberikan nomor urut dalam penjualan produk dengan PARTITION BY Nama_Produk untuk membagi dataset berdasarkan nama produk sebelum memberikan nomor urut berdasarkan jumlah dari yang terbesar.

Output:

FAQ (Frequently Ask Questions)

Apa perbedaan antara ROW_NUMBER(), RANK(), dan DENSE_RANK()?

ROW_NUMBER(), RANK(), dan DENSE_RANK() dalam SQL digunakan untuk memberikan nomor urut pada hasil query. Namun, cara pengurutan dan aturan penomoran mereka berbeda.

  • ROW_NUMBER() secara konsisten memberikan setiap baris nomor yang berurutan, terlepas dari apakah beberapa baris memiliki nilai yang sama.
  • RANK() memberikan nomor sama untuk baris dengan nilai yang sama, lalu melanjutkan penghitungan dengan mempertimbangkan jumlah total baris dengan nilai yang sama sebelumnya.
  • DENSE_RANK() memberikan nomor sama untuk nilai yang sama tanpa melompati angka untuk nomor berikutnya, sehingga menghasilkan urutan yang lebih "padat".

Bagaimana ROW_NUMBER bekerja dengan GROUP BY?

Memahami bagaimana ROW_NUMBER bekerja dengan GROUP BY dalam SQL memang sedikit tricky, karena kedua fungsi tersebut memiliki tujuan berbeda dan biasanya tidak digunakan bersamaan secara langsung dalam satu klausa.

  • GROUP BY dipakai untuk mengelompokkan baris yang memiliki nilai sama pada satu atau lebih kolom spesifik. Fungsi ini biasanya digunakan bersama dengan fungsi agregasi seperti SUM(), AVG(), atau COUNT() untuk menghitung atau menyimpulkan data dalam kelompok tersebut.
  • Sebagai window function, ROW_NUMBER memberikan nomor urut pada setiap baris dalam hasil query, berdasarkan urutan tertentu yang ditentukan.

Dikarenakan GROUP BY menghasilkan satu baris per grup berdasarkan fungsi agregasi, sementara ROW_NUMBER memerlukan baris individual untuk memberikan nomor urut, kamu biasanya perlu melakukan langkah tambahan seperti menggunakan subquery atau Common Table Expressions (CTEs). 

Bisakah ROW_NUMBER() digunakan pada semua database SQL?

ROW_NUMBER() adalah salah satu fungsi window yang tergolong dalam standar SQL yang lebih baru, dan sudah diadopsi oleh banyak database management system modern. Namun, ketersediaan dan implementasi spesifik bisa berbeda tergantung pada sistem database yang digunakan.

Berikut beberapa sistem database populer yang mendukung ROW_NUMBER():

  • SQL Server: Microsoft SQL Server telah mendukung ROW_NUMBER() sejak SQL Server 2005. Fungsi ini menjadi bagian penting dari kemampuan SQL Server untuk melakukan operasi kompleks pada dataset.
  • Oracle: Oracle mendukung ROW_NUMBER() mulai dari Oracle 9i Release 2. Ini merupakan bagian dari kemampuan analitik yang ditawarkan Oracle untuk pengolahan data.
  • PostgreSQL: PostgreSQL merupakan database management system yang mendukung fungsi window, termasuk ROW_NUMBER(), sejak versi 8.4 yang dirilis pada tahun 2009.
  • MySQL: MySQL mulai mendukung ROW_NUMBER() dan fungsi window lainnya mulai dari versi 8.0. Sebelum versi ini, MySQL tidak mendukung fungsi window secara asli.
  • SQLite: SQLite menambahkan dukungan untuk ROW_NUMBER() dan fungsi window lainnya sejak versi 3.25.0 yang dirilis pada September 2018.
RevoU Staff
Kickstart your career in tech with RevoU!
Menu