SQL Serverでは、SUM()
集計関数は、指定された式の合計を返します。
また、式内のすべての異なる(一意の)値の合計を返すために使用することもできます。
SUM()
数値列でのみ機能します。ヌル値は無視されます。
構文
構文は次のようになります:
SUM ( [ ALL | DISTINCT ] expression )
OVER
と一緒に使用することもできます 条項:
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
例
Products
というテーブルがあるとします。 次のデータを使用:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
結果:
+------------+---------------------------------+----------------+ | VendorId | ProductName | ProductPrice | |------------+---------------------------------+----------------| | 1001 | Left handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | 33.49 | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | NULL | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | | 1001 | Right handed screwdriver | 25.99 | +------------+---------------------------------+----------------+
次のクエリを使用して、すべての価格の合計を取得できます。
SELECT SUM(ProductPrice)
FROM Products;
結果:
367.20
ここでは、価格情報はProductPrice
に保存されています 列なので、それを引数としてSUM()
に渡します。 次に、合計を計算して結果を返す関数。
ヌル値
SUM()
関数は、計算を実行するときにnull値を無視します。
列にNULL値が含まれている場合、NULL値が削除されたことを示す警告が表示される場合があります。
たとえば、上記の例を実行したときに表示された警告は次のとおりです。
SELECT SUM(ProductPrice)
FROM Products;
結果:
+--------------------+ | (No column name) | |--------------------| | 367.20 | +--------------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
フィルタリングされた結果
SUM()
関数は、クエリによって返された行を操作します。したがって、結果をフィルタリングすると、SUM()
の結果になります。 それを反映します。
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
結果:
78.72
この場合、78.72は、指定されたベンダーが提供するすべての製品の合計です。
DISTINCT
キーワード
DISTINCT
を使用できます SUM()
を含むキーワード 個別の値のみを計算します。つまり、重複する値がある場合、それらは1つの値として扱われます。
例:
SELECT
SUM(ALL ProductPrice) AS "All",
SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
結果:
+--------+------------+ | All | Distinct | |--------+------------| | 367.20 | 341.21 | +--------+------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
私たちのテーブルには、同じ価格の2つのアイテムが含まれています(左ドライバーと右ドライバーの価格はどちらも25.99です)。 DISTINCT
キーワードを使用すると、これらの値の両方が1つとして扱われます。
ウィンドウ関数
SUM()
関数はOVER
で使用できます ウィンドウ関数を作成する句。 SQL SUM()
を参照してください 例として初心者向け。