Window
DuckDB
NTH_VALUE
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 2026Syntax
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
1 SELECT 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 10 FROM employees;
Mengambil gaji tertinggi kedua di setiap departemen.
Hasil
| department | employee_name | salary | second_highest_salary |
|---|---|---|---|
| IT | Budi | 25000000 | 22000000 |
| IT | Ani | 22000000 | 22000000 |
| IT | Eko | 18000000 | 22000000 |
Top 3 Products per Category
SQL
1 SELECT 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 8 FROM product_sales 9 WINDOW 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
| category | product_name | sales | top1 | top2 | top3 |
|---|---|---|---|---|---|
| Electronics | Laptop | 5000 | Laptop | Phone | Tablet |
| Electronics | Phone | 4500 | Laptop | Phone | Tablet |
Median-like Value
SQL
1 SELECT 2 department, 3 NTH_VALUE(salary, (COUNT(*) OVER w + 1) / 2) OVER w as median_salary 4 FROM employees 5 WINDOW 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
| department | median_salary |
|---|---|
| IT | 20000000 |
| Sales | 15000000 |
| HR | 12000000 |
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).