SQLにおけるLAG関数とLEAD関数の使い方と例


  1. LAG関数の使い方と例: LAG関数は、現在の行の前の行の値を取得するために使用されます。具体的な使用例を見てみましょう。

例1: 従業員テーブルにおける従業員の売上データを月別に表示するクエリ

SELECT
  employee_id,
  sales_date,
  sales_amount,
  LAG(sales_amount) OVER (ORDER BY sales_date) AS previous_sales
FROM
  employee_sales

上記のクエリでは、sales_dateで結果を並び替え、LAG関数を使用して直前の売上データを取得しています。このようにすることで、各行に現在の売上データと直前の売上データが表示されます。

  1. LEAD関数の使い方と例: LEAD関数は、現在の行の次の行の値を取得するために使用されます。以下にLEAD関数の使用例を示します。

例2: 製品テーブルにおける製品の価格変動を表示するクエリ

SELECT
  product_id,
  price,
  LEAD(price) OVER (ORDER BY update_date) AS next_price
FROM
  product_prices

上記のクエリでは、update_dateで結果を並び替え、LEAD関数を使用して次の価格を取得しています。これにより、各行に現在の価格と次の価格が表示されます。

  1. その他の使い方と応用: LAG関数とLEAD関数は、上記の例以外にもさまざまな応用が可能です。例えば、特定の条件に基づいて前後の行の値を比較し、集計や条件付きの計算を行うことができます。

例3: 前後の行の差を計算するクエリ

SELECT
  value,
  LAG(value) OVER (ORDER BY date) AS previous_value,
  value - LAG(value) OVER (ORDER BY date) AS value_difference
FROM
  data_table

上記のクエリでは、dateで結果を並び替え、LAG関数を使用して前の値を取得し、その差を計算しています。これにより、各行に現在の値、前の値、およびその差が表示されます。

以上がLAG関数とLEAD関数の基本的な使い方と例です。これらの関数は、データの比較やトレンドの分析、データの変化の検出など、さまざまなデータ処理のシナリオで役立ちます。ぜひご活用ください。