LAST_VALUE()
是一個 SQL 窗口函數,用于返回指定窗口中的最后一個值
LAST_VALUE(expression) OVER (
[PARTITION BY partition_expression1, partition_expression2, ...]
ORDER BY order_expression1, order_expression2, ...
[ROWS/RANGE frame_specification]
)
expression
:要計算最后一個值的列或表達式。PARTITION BY
(可選):將結果集劃分為多個分區,每個分區都會應用 LAST_VALUE()
函數。如果省略此子句,則整個結果集被視為一個分區。ORDER BY
:確定在窗口中的行順序,這對于確定“最后一個值”至關重要。ROWS/RANGE
(可選):定義窗口的范圍。默認情況下,窗口范圍包括從當前行到窗口末尾的所有行。你可以使用 ROWS
或 RANGE
子句自定義窗口范圍。以下是一個使用 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_in_department
FROM employees;
在這個示例中,我們查詢員工表,并使用 LAST_VALUE()
函數獲取每個部門的最后一個員工的薪水。我們按照 department_id
對結果集進行分區,并按照 employee_id
對每個分區內的行進行排序。我們還指定了窗口范圍,使其包括從當前行到窗口末尾的所有行。