📜  PostgreSQL – LAST_VALUE函数(1)

📅  最后修改于: 2023-12-03 15:18:38.467000             🧑  作者: Mango

PostgreSQL – LAST_VALUE函数

LAST_VALUE函数是PostgreSQL中的窗口函数之一,用于在窗口排序后返回最后一个非NULL值。

它的语法如下:

LAST_VALUE(expression) OVER (
    [ PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
    [ frame_clause ]
)

其中,

  • expression -- 需要获取最后一个值的列或表达式。
  • partition_expression -- 可选,表示窗口分区的列或表达式。如果指定,则它们将用于将结果划分为多个窗口。
  • sort_expression -- 指定窗口排序的列或表达式。
  • frame_clause -- 用于指定窗口范围的子句。默认情况下,窗口范围为UNBOUNDED PRECEDING到CURRENT ROW。

以下是一个示例,演示如何使用LAST_VALUE函数:

SELECT department_id, employee_id, salary, 
       LAST_VALUE(salary) OVER (PARTITION BY department_id ORDER BY salary ASC 
                                ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS last_salary 
FROM employees;

在上面的示例中,我们为每个部门的最后一个员工获取薪水。LAST_VALUE函数基于department_id列进行窗口分区,并根据salary列进行排序。然后,它返回每个窗口中的最后一个非NULL值。

请注意,窗口可以更精细地定义,以获取更特定的结果。例如,您可以使用ROWS BETWEEN 2 PRECEDING AND CURRENT ROW来获取当前行和前两行的最后一个非NULL值。

最后,值得一提的是,LAST_VALUE函数还可以与其他窗口函数(如RANKDENSE_RANK)一起使用,以便在一个窗口中获取更多相关信息。