ホームページ > データベース > mysql チュートリアル > SQL テーブルの行値の違いを計算するにはどうすればよいですか?

SQL テーブルの行値の違いを計算するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-10 15:18:46
オリジナル
172 人が閲覧しました

How to Calculate Row Value Differences in a SQL Table?

SQL テーブルの行値の違いを効率的に計算する

このガイドでは、非順次テーブル構造に焦点を当て、SQL テーブル内の連続する行値の差を計算する 2 つの方法を説明します。 最初の方法はすべての SQL バージョンに適していますが、2 番目の方法はウィンドウ関数を利用して SQL Server 2012 以降のパフォーマンスを向上させます。

方法 1: 自己結合 (すべての SQL バージョン)

このアプローチでは、

を使用して、行識別子 (この例では LEFT JOIN) に基づいて各行を後続の行と比較します。rowInt

<code class="language-sql">SELECT
   current.rowInt,
   current.Value,
   ISNULL(next.Value, 0) - current.Value AS ValueDifference
FROM
   sourceTable AS current
LEFT JOIN
   sourceTable AS next
      ON next.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > current.rowInt)</code>
ログイン後にコピー

関数は、行に後続 (最後の行) がない場合を処理し、ISNULL 値を避けるために差分 0 を割り当てます。NULL

方法 2: LEAD() ウィンドウ関数 (SQL Server 2012 以降)

新しい SQL Server バージョンで効率を高めるために、

ウィンドウ関数はより合理化されたソリューションを提供します。LEAD()

<code class="language-sql">SELECT
  RowInt,
  Value,
  LEAD(Value, 1, 0) OVER (ORDER BY RowInt) - Value AS ValueDifference
FROM
  sourceTable</code>
ログイン後にコピー

は次の行 (オフセット 1) から値を取得します。次の行が存在しない場合はデフォルトで 0 になります。 これにより差が直接計算されるため、自己結合の必要がなくなります。 通常、この方法の方が高速で読みやすいです。LEAD(Value, 1, 0)

以上がSQL テーブルの行値の違いを計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート