Window

ROW_NUMBER

SnowflakeSnowflake

Memberikan nomor urut unik untuk setiap baris dalam partition, dimulai dari 1. Nomor tidak pernah duplikat dalam satu partition.

Tipe hasil: INTEGERDiperbarui: 6 Jan 2026

Syntax

SQL
ROW_NUMBER() OVER ([PARTITION BY partition_expr] ORDER BY order_expr)

Parameter

ORDER BYclausewajib

Menentukan urutan penomoran dalam partition

PARTITION BYclauseopsional

Opsional. Membagi hasil ke dalam partition terpisah

Contoh Penggunaan

Penomoran Sederhana

SQL
1SELECT
2 ROW_NUMBER() OVER (ORDER BY created_at DESC) as row_num,
3 product_name,
4 created_at
5FROM products;

Memberikan nomor urut berdasarkan tanggal terbaru.

Hasil
ROW_NUMPRODUCT_NAMECREATED_AT
1iPhone 152024-03-15
2MacBook Pro2024-03-10
3AirPods2024-03-05

Top 3 per Kategori

SQL
1WITH ranked_products AS (
2 SELECT
3 category,
4 product_name,
5 price,
6 ROW_NUMBER() OVER (
7 PARTITION BY category
8 ORDER BY price DESC
9 ) as rank
10 FROM products
11)
12SELECT * FROM ranked_products WHERE rank <= 3;

Mengambil 3 produk termahal per kategori menggunakan ROW_NUMBER dengan PARTITION BY.

Hasil
CATEGORYPRODUCT_NAMEPRICERANK
ElectronicsMacBook Pro25000001
ElectronicsiPhone 1515000002
ElectronicsAirPods3500003
ClothingJacket5000001
... 1 baris lainnya

Deduplication - Keep Latest

SQL
1WITH deduplicated AS (
2 SELECT
3 *,
4 ROW_NUMBER() OVER (
5 PARTITION BY email
6 ORDER BY updated_at DESC
7 ) as rn
8 FROM users
9)
10SELECT * FROM deduplicated WHERE rn = 1;

Menghapus duplikat email, menyimpan record terbaru saja.

Pertanyaan Umum tentang ROW_NUMBER

Apa itu fungsi ROW_NUMBER di Snowflake?
Memberikan nomor urut unik untuk setiap baris dalam partition, dimulai dari 1. Nomor tidak pernah duplikat dalam satu partition. Di Snowflake, fungsi ROW_NUMBER termasuk dalam kelompok fungsi yang sering digunakan untuk mengolah dan menganalisis data secara efisien.
Bagaimana cara menggunakan ROW_NUMBER di Snowflake?
Gunakan sintaks berikut: ROW_NUMBER() OVER ([PARTITION BY partition_expr] ORDER BY order_expr). Pastikan argumen yang dimasukkan sudah sesuai dengan tipe data yang diharapkan.
Apa nilai yang dikembalikan oleh fungsi ROW_NUMBER?
Fungsi ROW_NUMBER mengembalikan nilai bertipe INTEGER. Pastikan tipe data hasil sudah sesuai dengan kebutuhan query atau formula kamu. Jika input mengandung nilai NULL, perilaku fungsi dapat berbeda — selalu periksa dokumentasi untuk memastikan hasilnya sesuai ekspektasi.
Apa saja parameter fungsi ROW_NUMBER?
Fungsi ini memiliki 1 parameter wajib dan 1 parameter opsional. Parameter yang digunakan: PARTITION BY (clause, opsional): Opsional. Membagi hasil ke dalam partition terpisah; ORDER BY (clause, wajib): Menentukan urutan penomoran dalam partition.