LAG 窗口函数 - AWS Clean Rooms

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

LAG 窗口函数

LAG 窗口函数返回位于分区中当前行的上方(之前)的某个给定偏移量位置的行的值。

语法

LAG (value_expr [, offset ]) [ IGNORE NULLS | RESPECT NULLS ] OVER ( [ PARTITION BY window_partition ] ORDER BY window_ordering )

参数

value_expr

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

offset

一个可选参数,该参数指定要返回其值的当前行前面的行数。偏移量可以是常量整数或计算结果为整数的表达式。如果未指定偏移量,则 AWS Clean Rooms 使用1作为默认值。偏移量为 0 表示当前行。

IGNORE NULLS

一种可选规范,用于指示在确定要使用哪一行时 AWS Clean Rooms 应跳过空值。如果未列出 IGNORE NULLS,则包含 Null 值。

注意

您可以使用 NVL 或 COALESCE 表达式将 null 值替换为另一个值。

RESPECT NULLS

表示在确定 AWS Clean Rooms 要使用哪一行时应包含空值。如果您未指定 IGNORE NULLS,则默认情况下不支持 RESPECT NULLS。

OVER

指定窗口分区和排序。OVER 子句不能包含窗口框架规范。

PARTITION BY window_partition

一个可选参数,该参数设置 OVER 子句中每个组的记录范围。

ORDER BY window_ordering

对每个分区中的行进行排序。

LAG 窗口函数支持使用任何 AWS Clean Rooms 数据类型的表达式。返回类型与 value_expr 的类型相同。

示例

以下示例显示已售给买家 ID 为 3 的买家的票数以及买家 3 的购票时间。要将每个销售与买家 3 的上一销售进行比较,查询要返回每个销售的上一销量。由于 1/16/2008 之前未进行购买,则第一个上一销量值为 null:

select buyerid, saletime, qtysold, lag(qtysold,1) over (order by buyerid, saletime) as prev_qtysold from sales where buyerid = 3 order by buyerid, saletime; buyerid | saletime | qtysold | prev_qtysold ---------+---------------------+---------+-------------- 3 | 2008-01-16 01:06:09 | 1 | 3 | 2008-01-28 02:10:01 | 1 | 1 3 | 2008-03-12 10:39:53 | 1 | 1 3 | 2008-03-13 02:56:07 | 1 | 1 3 | 2008-03-29 08:21:39 | 2 | 1 3 | 2008-04-27 02:39:01 | 1 | 2 3 | 2008-08-16 07:04:37 | 2 | 1 3 | 2008-08-22 11:45:26 | 2 | 2 3 | 2008-09-12 09:11:25 | 1 | 2 3 | 2008-10-01 06:22:37 | 1 | 1 3 | 2008-10-20 01:55:51 | 2 | 1 3 | 2008-10-28 01:30:40 | 1 | 2 (12 rows)