SQLで隣接するレコードの差分を取得する方法を教えてください。
SQLでは、ウィンドウ関数を使用すると、隣接するレコード間の差を求めることができます。具体的な手順は次のとおりです。
- LAG
- LAG(column_name, offset, default_value)
- 前行の記録の値から現在の行の記録の値を減算して、連続する記録の差を求めることができる。
ここにはその例があります。
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+など、データベースがウィンドウ関数機能をサポートしている必要があります。