Menu
Coddy logo textTech

LEAD & LAG Functions

CoddyのSQLジャーニー「基礎」セクションの一部 — レッスン 61/72。

LEAD および LAG 関数は、現在の行の値を n ステップ戻った位置または n ステップ先の位置からアクセスすることを可能にします。

たとえば、現在の行と1か月前の会社の収益の比率を計算したい場合、前月の値を抽出できます:

ID収益
15325
24926
33937
47238
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY id

これにより、次の表が作成されます:

idrevenueprev_month_revenue
1532 
2492532
3393492
4723393

この方法で prev_month_revenue/revenue の比率を計算できます。

代わりに LEAD 関数を使用した場合、各行の次の月の収益を取得します:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id
idrevenuenext_month_revenue
1532492
2492393
3393723
4723 
challenge icon

チャレンジ

簡単

利用可能なテーブルと列:

  • <strong>air_conditioners</strong>: <strong>id</strong>, <strong>efficiency</strong>, <strong>strength</strong>, <strong>month</strong>

各エアコンコンディショナーの効率を前のものと比較します。

各エアコンコンディショナーの効率と、インストールされた前のエアコンコンディショナーの効率(idに基づく)を表示するクエリを書いてください。また、現在のエアコンコンディショナーと前のエアコンコンディショナーの効率差を計算します。結果を <strong>id</strong><strong>efficiency</strong> の昇順で並べ替えます。

期待される出力列:

  • id
  • efficiency
  • previous_efficiency (LAG を使用)
  • efficiency_difference (現在の効率 - 前の効率)

最後に、このクエリの後に、previous_efficiency または efficiency_difference が空の行をフィルタリングします:

SELECT * FROM (
    -- Your query here
)
WHERE previous_efficiency != 0

チートシート

LAGLEAD 関数は、前の行または次の行の値にアクセスすることを可能にします:

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 id

LEAD を使用して次月の収益を取得する例:

SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id

最初の行は LAG の値が NULL になり、最後の行は LEAD の値が NULL になります。

自分で試してみよう

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン