ホームページ >データベース >mysql チュートリアル >ウィンドウ関数を使用して SQL の連続する行の差を計算するにはどうすればよいですか?

ウィンドウ関数を使用して SQL の連続する行の差を計算するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-23 03:17:08617ブラウズ

How Can I Calculate the Difference Between Consecutive Rows in SQL Using Window Functions?

ウィンドウ関数を使用して隣接する SQL 行の差分を効率的に計算する

データ分析では、データセット内の連続する行間の差異を特定することが頻繁に行われます。 SQL のウィンドウ関数、特に

関数は洗練されたソリューションを提供します。LAG

機能の活用LAG

関数は、定義されたウィンドウ内の前の行から値を取得します。 LAG 句はウィンドウの順序を指定します (例: OVER)。 ORDER BY Id は、指定された順序で現在の行の直前の行から指定された列の値を返します。LAG

次の SQL クエリは、「table」という名前のテーブル内の連続する「value」エントリの差を計算する方法を示しています。

<code class="language-sql">SELECT value - LAG(value) OVER (ORDER BY Id) AS difference FROM table;</code>
これにより、各行の「値」とその前の行の「値」の違いを示す新しいテーブルが生成されます。

ID シーケンスの潜在的なギャップに対処する

順序付けに ID 列を使用するには、ID シーケンス内の潜在的なギャップを認識する必要があります。 ID が連続していない場合、前の ID (Id-1) を直接減算すると、差分計算が不正確になる可能性があります。

出力例

次のデータを含む「テーブル」を指定します:

<code>Id | value
----- | -----
1 | 10
2 | 15
3 | 20
4 | 25</code>
上記の SQL クエリは次を生成します:

<code>difference
----------
NULL
5
5
5</code>
比較する前の行がないため、最初の行の

に注意してください。NULL

以上がウィンドウ関数を使用して SQL の連続する行の差を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。