SQLで隣接するレコードの差分を取得する方法を教えてください。

SQLでは、ウィンドウ関数を使用すると、隣接するレコード間の差を求めることができます。具体的な手順は次のとおりです。

  1. LAG
  2. LAG(column_name, offset, default_value)
  3. 前行の記録の値から現在の行の記録の値を減算して、連続する記録の差を求めることができる。

ここにはその例があります。

SELECT column_name - LAG(column_name) OVER (ORDER BY column_name) AS difference
FROM table_name

上記の例では、column_name は差分を計算する列名、table_name は検索するテーブル名です。OVER(ORDER BY column_name)句を使用して、column_name 列の値で並べ替えます。

差分を計算したい列が複数ある場合は、SELECT句で各列の差分を個別に計算すると可能です。

ウィンドウ関数を使用するには、MySQL 8.0+、SQL Server 2012+、Oracle 12c+など、データベースがウィンドウ関数機能をサポートしている必要があります。

bannerAds