説明
この関数は分析関数であり、クエリ内の同一フィールドの後ろから offset 行目のデータを独立した列としてテーブルに格納する機能を持っています。この操作は、テーブルの自己結合に代わるものです。
構文
LEAD { (value_expr [,offset [,default]]) [{ RESPECT|IGNORE } NULLS ]
| (value_expr [{ RESPECT|IGNORE } NULLS ] [,offset [,default] ])
}
OVER([query_partition_clause] order_by_clause)
パラメータの説明
| パラメータ | 説明 |
|---|---|
| value_expr | クエリ対象のフィールドを指定します。 注意 value_expr にLEAD関数やその他の分析関数をネストすることはできません。 |
| offset | クエリvalue_exprのオフセットを指定します。これは0より大きい整数です。オプションで、デフォルト値は1です。 |
| default | 条件に一致するデータがない場合のデフォルト値を指定します。オフセットがウィンドウの範囲を超える場合、defaultの値が返されます。オプションで、デフォルト値はNULLです。 |
| {RESPECT | IGNORE} NULLS | NULL値を無視するかどうかを示します。オプションです。デフォルト値はRESPECT NULLSです。
|
| OVER | OVER句を使用してウィンドウを定義し、計算を行います。詳細については、分析関数の説明を参照してください。 |
戻り値の型
返されるデータ型は制限されません。
例
既に作成されているテーブルemp_msgがあります。emp_msgテーブルを照会し、フィールドenameの値を取得し、enameフィールドで昇順にソートします。最後に、5行目の値はXXXと置き換えます。
obclient> SELECT * FROM emp_msg;
+--------+--------+------+------+
| DEPTNO | ENAME | SAL | MGR |
+--------+--------+------+------+
| 10 | CLARK | 2750 | 7839 |
| 10 | KING | 5300 | NULL |
| 10 | MILLER | 1600 | 7782 |
| 20 | ADAMS | 1400 | 7788 |
| 20 | FORD | 3300 | 7566 |
| 20 | JONES | 3275 | 7839 |
| 20 | SCOTT | 3300 | 7566 |
| 20 | SMITH | 1100 | 7902 |
| 30 | ALLEN | 1900 | 7698 |
| 30 | BLAKE | 3150 | 7839 |
| 30 | JAMES | 1250 | 7698 |
| 30 | MARTIN | 1550 | 7698 |
| 30 | TURNER | 1800 | 7698 |
| 30 | WARD | 1550 | 7698 |
| 30 | SCLARK | 1750 | 7839 |
+--------+--------+------+------+
15 rows in set
obclient> SELECT deptno, ename, sal, LEAD(ename,5,'XXX') OVER (ORDER BY ename desc) AS new_ename
FROM emp_msg;
+--------+--------+------+-----------+
| DEPTNO | ENAME | SAL | NEW_ENAME |
+--------+--------+------+-----------+
| 20 | ADAMS | 1400 | JAMES |
| 30 | ALLEN | 1900 | JONES |
| 30 | BLAKE | 3150 | KING |
| 10 | CLARK | 2750 | MARTIN |
| 20 | FORD | 3300 | MILLER |
| 30 | JAMES | 1250 | SCLARK |
| 20 | JONES | 3275 | SCOTT |
| 10 | KING | 5300 | SMITH |
| 30 | MARTIN | 1550 | TURNER |
| 10 | MILLER | 1600 | WARD |
| 30 | SCLARK | 1750 | XXX |
| 20 | SCOTT | 3300 | XXX |
| 20 | SMITH | 1100 | XXX |
| 30 | TURNER | 1800 | XXX |
| 30 | WARD | 1550 | XXX |
+--------+--------+------+-----------+
15 rows in set