Window

NTH_VALUE

DuckDBDuckDB

Mengambil nilai ke-n dari window frame. Generalisasi dari FIRST_VALUE dan LAST_VALUE untuk posisi arbitrary.

Tipe hasil: Sama dengan tipe inputDiperbarui: 16 Mei 2026

Syntax

SQL
NTH_VALUE(expression, n) OVER (window_specification)

Parameter

expressionanywajib

Kolom atau ekspresi yang nilainya akan diambil

nINTEGERwajib

Posisi ke-n yang diinginkan (1-based index)

Contoh Penggunaan

Mengambil Nilai Kedua Tertinggi

SQL
1SELECT
2 department,
3 employee_name,
4 salary,
5 NTH_VALUE(salary, 2) OVER (
6 PARTITION BY department
7 ORDER BY salary DESC
8 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
9 ) as second_highest_salary
10FROM employees;

Mengambil gaji tertinggi kedua di setiap departemen.

Hasil
departmentemployee_namesalarysecond_highest_salary
ITBudi2500000022000000
ITAni2200000022000000
ITEko1800000022000000

Top 3 Products per Category

SQL
1SELECT
2 category,
3 product_name,
4 sales,
5 NTH_VALUE(product_name, 1) OVER w as top1,
6 NTH_VALUE(product_name, 2) OVER w as top2,
7 NTH_VALUE(product_name, 3) OVER w as top3
8FROM product_sales
9WINDOW w AS (
10 PARTITION BY category
11 ORDER BY sales DESC
12 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
13);

Mendapatkan top 3 produk per kategori.

Hasil
categoryproduct_namesalestop1top2top3
ElectronicsLaptop5000LaptopPhoneTablet
ElectronicsPhone4500LaptopPhoneTablet

Median-like Value

SQL
1SELECT
2 department,
3 NTH_VALUE(salary, (COUNT(*) OVER w + 1) / 2) OVER w as median_salary
4FROM employees
5WINDOW w AS (
6 PARTITION BY department
7 ORDER BY salary
8 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
9);

Mengambil nilai tengah (pseudo-median) dari salary.

Hasil
departmentmedian_salary
IT20000000
Sales15000000
HR12000000

Pertanyaan Umum tentang NTH_VALUE

Apa itu fungsi NTH_VALUE di DuckDB?
Mengambil nilai ke-n dari window frame. Generalisasi dari FIRST_VALUE dan LAST_VALUE untuk posisi arbitrary. Di DuckDB, fungsi NTH_VALUE termasuk dalam kelompok fungsi yang sering digunakan untuk mengolah dan menganalisis data secara efisien.
Bagaimana cara menggunakan NTH_VALUE di DuckDB?
Gunakan sintaks berikut: NTH_VALUE(expression, n) OVER (window_specification). 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 Sama dengan tipe 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 2 parameter wajib. Parameter yang digunakan: expression (any, wajib): Kolom atau ekspresi yang nilainya akan diambil; n (INTEGER, wajib): Posisi ke-n yang diinginkan (1-based index).