LAG ウィンドウ関数 - Amazon Redshift

LAG ウィンドウ関数

LAG ウィンドウ関数は、パーティションの現在の行より上 (前) の指定されたオフセットの行の値を返します。

構文

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

引数

value_expr

関数の対象となる列または式。

offset

値を返す現在の行より前の行数を指定するオプションのパラメータ。オフセットは整数の定数、または整数を検証する式にすることができます。オフセットを指定していない場合、Amazon Redshift はデフォルト値として 1 を使用します。0 のオフセットは現在の行を示します。

IGNORE NULLS

Amazon Redshift が使用する行を決定するときに null 値をスキップすることを指定するオプションの仕様。IGNORE NULLS がリストされていない場合、Null 値が含まれます。

注記

NVL または COALESCE 式を使用し、Null 値を別の値で置換できます。詳細については、「NVL および COALESCE 関数」を参照してください。

RESPECT NULLS

Amazon Redshift は使用される行を決定するために null 値を含める必要があることを示します。IGNORE NULLS を指定しない場合、RESPECT NULLS はデフォルトでサポートされます。

OVER

ウィンドウのパーティションおよび並び順を指定します。OVER 句にウィンドウフレーム仕様を含めることはできません。

PARTITION BY window_partition

OVER 句の各グループのレコードの範囲を設定するオプションの引数。

ORDER BY window_ordering

各パーティション内の行をソートします。

LAG ウィンドウ関数は、Amazon Redshift のデータ型を使用する式をサポートします。戻り値の型は 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)