Window

NTH_VALUE

PostgreSQLPostgreSQL

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 2026

Syntax

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
1SELECT
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
10FROM products;

Mengambil produk dengan penjualan kedua tertinggi per kategori.

Hasil
categoryproduct_namesalessecond_best
ElectronicsLaptop1000Phone
ElectronicsPhone800Phone
ElectronicsTablet600Phone

Top 3 Values

SQL
1SELECT 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
6FROM products
7WINDOW 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
1SELECT
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
6FROM 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.