宣言
LEAD { ( value_expr [, offset [, default]]) [ { RESPECT | IGNORE } NULLS ] | ( value_expr [ { RESPECT | IGNORE } NULLS ] [, offset [, default]] )} OVER ([ query_partition_clause ] order_by_clause)
説明
LEAD 関数は、ユーザーが1回のクエリで現在行の同じフィールドの次のN行目のデータを取得するために使用します。この操作は同じテーブルの自己結合を使用して実現できますが、LEAD() ウィンドウ関数の方が効率的です。
パラメータ
各パラメータの意味は以下の表のとおりです。
パラメータ |
意味 |
|---|---|
value_expr |
比較するフィールドを表す |
offset |
value_expr のオフセット量を表す |
default |
デフォルトの戻り値を表す。デフォルト値は NULL であり、default 値を明示的に設定しない場合、戻り値は NULL となることを意味する。 |
[ { RESPECT | IGNORE } NULLS ] |
NULL 値を考慮するかどうかを表す。デフォルト値は RESPECT NULLS であり、NULL 値を考慮することを意味する。 |
order_by_clause |
データを特定の列でソートした後に、最初の何行目、最後の何行目という概念を持たせるために使用される。 |
query_partition_clause |
クエリのパーティションを指定するために使用される。デフォルトの場合、グローバルデータを使用することを意味する。 |
例
obclient> CREATE TABLE EXPLOYEES(LAST_NAME CHAR(10), SALARY DECIMAL, JOB_ID CHAR(32));
Query OK, 0 rows affected
obclient> INSERT INTO EXPLOYEES VALUES('JIM', 2000, 'CLEANER');
Query OK, 1 row affected
obclient> INSERT INTO EXPLOYEES VALUES('MIKE', 12000, 'ENGINEERING');
Query OK, 1 row affected
obclient> INSERT INTO EXPLOYEES VALUES('LILY', 13000, 'ENGINEERING');
Query OK, 1 row affected
obclient> INSERT INTO EXPLOYEES VALUES('TOM', 11000, 'ENGINEERING');
Query OK, 1 row affected
obclient> SELECT LAST_NAME, LEAD(SALARY) OVER(ORDER BY SALARY) LEAD, LAG(SALARY) OVER(ORDER BY SALARY) LAG FROM EXPLOYEES;
+-----------+-------+-------+
| LAST_NAME | LEAD | LAG |
+-----------+-------+-------+
| JIM | 11000 | NULL |
| TOM | 12000 | 2000 |
| MIKE | 13000 | 11000 |
| LILY | NULL | 12000 |
+-----------+-------+-------+
4 rows in set