データベース - SQL 関数 - 前後取得 LEAD・LAG
- 1. 概要
- 2. やってみる
1. 概要
「LEAD」が後ろの行を取り出すもので、「LAG」が前の行を取り出します。
本ページは、下記のサイトを参考にさせていただきました。
「【BigQuery】LAG関数,LEAD関数の使い方」
「T-SQL - lag関数/lead関数でn個前/n個後の行を取得する」
「[Redshift] ウィンドウ関数:LAG、LEADを使ってスケジュールの日程間隔などを表示」
2. やってみる
SELECT * FROM WEEK;
で取得すると
1 日
2 月
3 火
4 水
5 木
6 金
7 土
という結果の得られるテーブルがあります(実際に作った)。
これを下記のような「SQL」で取得すると
SELECT
DATE
,LEAD(DATE, 1) OVER(ORDER BY DATE)
,LAG(DATE, 2) OVER(ORDER BY DATE)
,NAME
FROM
WEEK
;
で取得すると、下記のような結果になります。
1 2 NULL 日
2 3 NULL 月
3 4 1 火
4 5 2 水
5 6 3 木
6 7 4 金
7 NULL 5 土
前後の行がない場合は、「NULL」になります。
実際に使用する場合は、参考サイトを見る限り、「DateTime」型を使用して、前日比の計算をしたりスケジュールの日程を取得したりすることが多いようです。
|
|