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.