

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# LAG 範圍函數
<a name="WF_LAG"></a>

 LAG 範圍函數傳回分割區中目前列上方 (之前) 給定位移那一列的值。

## 語法
<a name="WF_LAG-synopsis"></a>

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

## 引數
<a name="WF_LAG-arguments"></a>

 *value\_expr*   
 函數運算的目標欄或表達式。

 *offset*   
 選擇性參數，指定在目前列之前要傳回值的列數。位移可以是常數整數，或評估為整數的表達式。如果您未指定位移， AWS Clean Rooms會使用 `1`做為預設值。位移 `0` 表示目前列。

IGNORE NULLS   
選用規格，指出 AWS Clean Rooms應該在決定要使用的資料列時略過 null 值。如果未列出 IGNORE NULLS，則會包含 Null 值。  
您可以使用 NVL 或 COALESCE 表達式，將 Null 值換成另一個值。

RESPECT NULLS   
 指出 AWS Clean Rooms應該在決定要使用的資料列時包含 null 值。如果您不指定 IGNORE NULLS，則預設支援 RESPECT NULLS。

OVER   
指定視窗分割和排序。OVER 子句不能包含視窗框規格。

PARTITION BY *window\_partition*   
選擇性引數，針對 OVER 子句中的每一個群組，設定記錄範圍。

ORDER BY *window\_ordering*   
排序每一個分割區內的列。

LAG 視窗函數支援使用任何AWS Clean Rooms資料類型的表達式。傳回類型與 *value\_expr* 的類型相同。

## 範例
<a name="WF_LAG-examples"></a>

 下列範例顯示銷售給買方 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)
```