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
对每个分区内的行进行排序。我们还指定了窗口范围,使其包括从当前行到窗口末尾的所有行。