在 SQL 中,LAST_VALUE
是一個窗口函數(Window Function),它用于獲取每個窗口(Window)中的最后一個值
以下是 LAST_VALUE
函數的基本語法:
LAST_VALUE(expression) OVER (
[PARTITION BY partition_expression]
ORDER BY order_expression
[ROWS/RANGE frame_specification]
)
其中:
expression
:要獲取最后一個值的列或表達式。PARTITION BY partition_expression
:可選項,用于將結果集分成多個分區,然后對每個分區應用 LAST_VALUE
函數。ORDER BY order_expression
:用于確定窗口中行的順序。ROWS/RANGE frame_specification
:可選項,用于限制窗口的范圍。以下是一個使用 LAST_VALUE
函數的示例:
SELECT
employee_id,
department_id,
salary,
LAST_VALUE(salary) OVER (PARTITION BY department_id ORDER BY employee_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as last_salary
FROM employees;
在這個示例中,我們從 employees
表中選擇員工 ID、部門 ID、薪水等信息,并使用 LAST_VALUE
函數獲取每個部門中最后一個員工的薪水。我們按照員工 ID 對每個部門進行排序,并使用 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
限定窗口范圍,以便在每個部門內包含所有員工。