在 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
限定窗口范围,以便在每个部门内包含所有员工。