LEAD & LAG Functions
CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 61/72。
LEAD および LAG 関数は、現在の行の値を n ステップ戻った位置または n ステップ先の位置からアクセスすることを可能にします。
たとえば、現在の行と1か月前の会社の収益の比率を計算したい場合、前月の値を抽出できます:
| ID | 収益 | 月 |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY idこれにより、次の表が作成されます:
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 393 |
この方法で prev_month_revenue/revenue の比率を計算できます。
代わりに LEAD 関数を使用した場合、各行の次の月の収益を取得します:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
チャレンジ
簡単利用可能なテーブルと列:
<strong>air_conditioners</strong>:<strong>id</strong>,<strong>efficiency</strong>,<strong>strength</strong>,<strong>month</strong>
各エアコンコンディショナーの効率を前のものと比較します。
各エアコンコンディショナーの効率と、インストールされた前のエアコンコンディショナーの効率(idに基づく)を表示するクエリを書いてください。また、現在のエアコンコンディショナーと前のエアコンコンディショナーの効率差を計算します。結果を <strong>id</strong> と <strong>efficiency</strong> の昇順で並べ替えます。
期待される出力列:
idefficiencyprevious_efficiency(LAG を使用)efficiency_difference(現在の効率 - 前の効率)
最後に、このクエリの後に、previous_efficiency または efficiency_difference が空の行をフィルタリングします:
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency != 0チートシート
LAG と LEAD 関数は、前の行または次の行の値にアクセスすることを可能にします:
LAG 関数 - 前の行から値を取得します:
LAG(column_name, n) OVER (ORDER BY column)LEAD 関数 - 次の行から値を取得します:
LEAD(column_name, n) OVER (ORDER BY column)LAG を使用して前月の収益を取得する例:
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY month) as prev_month_revenue
FROM table1 ORDER BY idLEAD を使用して次月の収益を取得する例:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id最初の行は LAG の値が NULL になり、最後の行は LEAD の値が NULL になります。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns