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