Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

FIRST_VALUE 和 LAST_VALUE 开窗函数

在提供一组已排序行的情况下,FIRST_VALUE 返回有关窗口框架中的第一行的指定表达式的值。LAST_VALUE 函数返回有关框架中最后一行的表达式的值。

语法

Copy
FIRST_VALUE | LAST_VALUE ( expression [ IGNORE NULLS | RESPECT NULLS ] ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )

参数

expression

对其执行函数的目标列或表达式。

IGNORE NULLS

将此选项与 FIRST_VALUE 结合使用时,该函数返回不为 NULL 的框架中的第一个值(如果所有值为 NULL,则返回 NULL)。将此选项与 LAST_VALUE 结合使用时,该函数返回不为 NULL 的框架中的最后一个值(如果所有值为 NULL,则返回 NULL)。

RESPECT NULLS

指示 Amazon Redshift 应包含 null 值以确定要使用的行。如果您未指定 IGNORE NULLS,则默认情况下不支持 RESPECT NULLS。

OVER

引入函数的窗口子句。

PARTITION BY expr_list

依据一个或多个表达式定义函数的窗口。

ORDER BY order_list

对每个分区中的行进行排序。如果未指定 PARTITION BY 子句,则 ORDER BY 对整个表进行排序。如果指定 ORDER BY 子句,则还必须指定 frame_clause

FIRST_VALUE 和 LAST_VALUE 函数的结果取决于数据的排序。在以下情况下,结果是不确定的:

  • 当未指定 ORDER BY 子句且一个分区包含一个表达式的两个不同的值时

  • 当表达式的计算结果为对应于 ORDER BY 列表中同一值的不同值时。

frame_clause

如果 ORDER BY 子句用于聚合函数,则需要显式框架子句。框架子句优化函数窗口中的行集,包含或排除已排序结果中的行集。框架子句包括 ROWS 关键字和关联的说明符。请参阅开窗函数语法摘要

数据类型

这些函数支持使用任何 Amazon Redshift 数据类型的表达式。返回类型与 expression 的类型相同。

示例

请参阅FIRST_VALUE 和 LAST_VALUE 开窗函数示例

本页内容: