Menu
Coddy logo textTech

LEADとLAG関数

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

LEAD関数とLAG関数を使用すると、現在の行からnステップ前またはnステップ先の値にアクセスできます。

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

idrevenuemonth
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

チャレンジ

簡単

利用可能なテーブルとカラム:

  • air_conditionersidefficiencystrengthmonth

各エアコンの効率を、その前のエアコンと比較してください。

各エアコンの効率と、直前に設置されたエアコン(idに基づく)の効率を表示するクエリを書いてください。また、現在のエアコンと前のエアコンの効率の差も計算してください。結果はidefficiencyの昇順で並べ替えてください。

期待される出力カラム:

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

最後に、クエリをラップして、最初の行を除外してください。最初の行のprevious_efficiency(したがってefficiency_differenceも)は空、つまりNULLです:

SELECT * FROM (
    -- Your query here
)
WHERE previous_efficiency IS NOT NULL

自分で試してみよう

quiz icon腕試し

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

基礎のすべてのレッスン

自分で練習してみよう: SQLプレイグラウンド