Window
PostgreSQL
NTH_VALUE
Mengembalikan nilai pada posisi ke-n dalam window frame. Mengembalikan NULL jika tidak ada cukup baris. n dimulai dari 1.
Tipe hasil:
same as inputDiperbarui: 16 Mei 2026Syntax
SQL
NTH_VALUE(expression, n) OVER (
[PARTITION BY partition_expression]
ORDER BY sort_expression
[frame_clause]
)Parameter
expressionanywajib
Kolom atau ekspresi yang nilainya diambil
nintegerwajib
Posisi nilai yang diambil (1-based)
ORDER BYexpressionwajib
Menentukan urutan dalam window
PARTITION BYexpressionopsional
Membagi data menjadi grup terpisah
Contoh Penggunaan
Ambil Nilai ke-2
SQL
1 SELECT 2 category, 3 product_name, 4 sales, 5 NTH_VALUE(product_name, 2) OVER ( 6 PARTITION BY category 7 ORDER BY sales DESC 8 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 9 ) AS second_best 10 FROM products;
Mengambil produk dengan penjualan kedua tertinggi per kategori.
Hasil
| category | product_name | sales | second_best |
|---|---|---|---|
| Electronics | Laptop | 1000 | Phone |
| Electronics | Phone | 800 | Phone |
| Electronics | Tablet | 600 | Phone |
Top 3 Values
SQL
1 SELECT DISTINCT 2 category, 3 NTH_VALUE(product_name, 1) OVER w AS top_1, 4 NTH_VALUE(product_name, 2) OVER w AS top_2, 5 NTH_VALUE(product_name, 3) OVER w AS top_3 6 FROM products 7 WINDOW w AS ( 8 PARTITION BY category 9 ORDER BY sales DESC 10 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 11 );
Mengambil top 3 produk per kategori dalam satu row.
Nilai Median (Posisi Tengah)
SQL
1 SELECT 2 NTH_VALUE(score, (COUNT(*) OVER () + 1) / 2) OVER ( 3 ORDER BY score 4 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 5 ) AS median_ish 6 FROM test_scores;
Pendekatan alternatif untuk mencari median.
Pertanyaan Umum tentang NTH_VALUE
Apa itu fungsi NTH_VALUE di PostgreSQL?
Mengembalikan nilai pada posisi ke-n dalam window frame. Mengembalikan NULL jika tidak ada cukup baris. n dimulai dari 1. Di PostgreSQL, fungsi NTH_VALUE termasuk dalam kelompok fungsi yang sering digunakan untuk mengolah dan menganalisis data secara efisien.
Bagaimana cara menggunakan NTH_VALUE di PostgreSQL?
Gunakan sintaks berikut: NTH_VALUE(expression, n) OVER (
[PARTITION BY partition_expression]
ORDER BY sort_expression
[frame_clause]
). Pastikan argumen yang dimasukkan sudah sesuai dengan tipe data yang diharapkan.
Apa nilai yang dikembalikan oleh fungsi NTH_VALUE?
Fungsi NTH_VALUE mengembalikan nilai bertipe same as input. 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 NTH_VALUE?
Fungsi ini memiliki 3 parameter wajib dan 1 parameter opsional. Parameter yang digunakan: expression (any, wajib): Kolom atau ekspresi yang nilainya diambil; n (integer, wajib): Posisi nilai yang diambil (1-based); PARTITION BY (expression, opsional): Membagi data menjadi grup terpisah; ORDER BY (expression, wajib): Menentukan urutan dalam window.