Window
PostgreSQL
LAST_VALUE
Mengembalikan nilai terakhir dalam window frame. PENTING: Tanpa frame clause eksplisit, hanya melihat sampai baris saat ini. Gunakan UNBOUNDED FOLLOWING untuk nilai terakhir sesungguhnya.
Tipe hasil:
same as inputDiperbarui: 16 Mei 2026Syntax
SQL
LAST_VALUE(expression) OVER (
[PARTITION BY partition_expression]
ORDER BY sort_expression
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)Parameter
expressionanywajib
Kolom atau ekspresi yang nilainya diambil
ORDER BYexpressionwajib
Menentukan urutan dalam window
PARTITION BYexpressionopsional
Membagi data menjadi grup terpisah
Contoh Penggunaan
Harga Penutupan (Closing Price)
SQL
1 SELECT 2 date, 3 stock_symbol, 4 price, 5 LAST_VALUE(price) OVER ( 6 PARTITION BY stock_symbol 7 ORDER BY date 8 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 9 ) AS closing_price 10 FROM stock_prices;
Mengambil harga terakhir (penutupan) untuk setiap saham.
Hasil
| date | stock_symbol | price | closing_price |
|---|---|---|---|
| 2024-01-01 | BBCA | 10000 | 10500 |
| 2024-01-02 | BBCA | 10200 | 10500 |
| 2024-01-03 | BBCA | 10500 | 10500 |
Gap dari Target Akhir
SQL
1 SELECT 2 month, 3 actual_sales, 4 LAST_VALUE(actual_sales) OVER ( 5 ORDER BY month 6 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 7 ) AS final_sales, 8 LAST_VALUE(actual_sales) OVER (...) - actual_sales AS gap_to_final 9 FROM monthly_performance;
Menghitung gap antara nilai saat ini dengan nilai akhir.
Gotcha: Tanpa Frame Clause
SQL
1 -- SALAH: Akan menghasilkan nilai row saat ini 2 SELECT LAST_VALUE(price) OVER (ORDER BY date) AS wrong; 3 4 -- BENAR: Gunakan frame clause 5 SELECT LAST_VALUE(price) OVER ( 6 ORDER BY date 7 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 8 ) AS correct;
Tanpa frame clause, LAST_VALUE hanya melihat sampai baris saat ini.
Pertanyaan Umum tentang LAST_VALUE
Apa itu fungsi LAST_VALUE di PostgreSQL?
Mengembalikan nilai terakhir dalam window frame. PENTING: Tanpa frame clause eksplisit, hanya melihat sampai baris saat ini. Gunakan UNBOUNDED FOLLOWING untuk nilai terakhir sesungguhnya. Di PostgreSQL, fungsi LAST_VALUE termasuk dalam kelompok fungsi yang sering digunakan untuk mengolah dan menganalisis data secara efisien.
Bagaimana cara menggunakan LAST_VALUE di PostgreSQL?
Gunakan sintaks berikut: LAST_VALUE(expression) OVER (
[PARTITION BY partition_expression]
ORDER BY sort_expression
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
). Pastikan argumen yang dimasukkan sudah sesuai dengan tipe data yang diharapkan.
Apa nilai yang dikembalikan oleh fungsi LAST_VALUE?
Fungsi LAST_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 LAST_VALUE?
Fungsi ini memiliki 2 parameter wajib dan 1 parameter opsional. Parameter yang digunakan: expression (any, wajib): Kolom atau ekspresi yang nilainya diambil; PARTITION BY (expression, opsional): Membagi data menjadi grup terpisah; ORDER BY (expression, wajib): Menentukan urutan dalam window.