本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 應該在決定要使用的資料列時略過 null 值。如果IGNORENULLS未列出,則會包含 Null 值。
注意
您可以使用 NVL或 COALESCE表達式,將 null 值取代為另一個值。
- RESPECT NULLS
-
表示 AWS Clean Rooms 應該在決定要使用的資料列時包含 null 值。如果您未指定 IGNORE , 預設RESPECTNULLS支援 NULLS。
- OVER
-
指定視窗分割和排序。OVER 子句不能包含視窗框架規格。
- PARTITION BY window_partition
-
選用引數,可設定子OVER句中每個群組的記錄範圍。
- ORDER BY window_ordering
-
排序每一個分割區內的列。
LAG 視窗函數支援使用任何 AWS Clean Rooms 資料類型的表達式。傳回類型與 value_expr 的類型相同。
範例
下列範例顯示銷售給買方 ID 為 3 之買方的門票數量,以及買方 3 購買門票的時間。為了比較買方 3 的每次銷售與前次銷售,查詢會傳回每次銷售的前次銷售數量。因為 2008/1/16 之前沒有購買,所以第一個先前銷售數量值為 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)