Поделиться через


SUM (Transact-SQL)

Возвращает сумму всех, либо только уникальных, значений в выражении. Функция SUM может быть использована только для числовых столбцов. Значения NULL не учитываются. За функцией может следовать Предложение OVER (Transact-SQL).

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

SUM ( [ ALL | DISTINCT ] expression )

Аргументы

  • ALL
    Применяет агрегатную функцию ко всем значениям. По умолчанию задается параметр ALL.

  • DISTINCT
    Указывает, что функция SUM возвращает сумму только уникальных значений.

  • expression
    Может быть константой, столбцом или функцией, а также любым сочетанием арифметических, побитовых и строковых операторов. Аргумент expression является выражением относительно точных или приближенных данных любого числового типа, за исключением типа bit. Агрегатные функции и вложенные запросы не применяются. Дополнительные сведения см. в разделе Выражения (Transact-SQL).

Типы возвращаемых данных

Возвращает сумму всех значений выражения expression, представленную в наиболее точном формате данных, используемом в выражении expression.

Результат выражения

Тип возвращаемых данных

tinyint

int

smallint

int

int

int

bigint

bigint

категория decimal (p, s)

decimal(38, s)

категория money и smallmoney

money

категория float и real

float

Примеры

А. Использование SUM с обычными и строковыми статистическими выражениями

В приведенных ниже примерах показывается разница между обычными и строковыми агрегатными функциями. В первом примере агрегатные функции используются для получения только сводных данных. С помощью строковых агрегатных функций второго примера были получены как сводные, так и детализированные данные.

USE AdventureWorks2008R2;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
WHERE Color IS NOT NULL 
    AND ListPrice != 0.00 
    AND Name LIKE 'Mountain%'
GROUP BY Color
ORDER BY Color;
GO

Ниже приводится результирующий набор.

Цвет

--------------- --------------------- ---------------------

Black 27404,84 15214,9616

Silver 26462,84 14665,6792

White 19,00 6,7926

(Обработано строк: 3)

USE AdventureWorks2008R2;
GO
SELECT Color, ListPrice, StandardCost
FROM Production.Product
WHERE Color IS NOT NULL 
    AND ListPrice != 0.00 
    AND Name LIKE 'Mountain%'
ORDER BY Color
COMPUTE SUM(ListPrice), SUM(StandardCost) BY Color;
GO

Ниже приводится результирующий набор.

Color ListPrice StandardCost

--------------- --------------------- ---------------------

Black 2294,99 1251,9813

Black 2294,99 1251,9813

Black 2294,99 1251,9813

Black 1079,99 598,4354

Black 1079,99 598,4354

Black 1079,99 598,4354

Black 1079,99 598,4354

Black 3374,99 1898,0944

Black 3374,99 1898,0944

Black 3374,99 1898,0944

Black 3374,99 1898,0944

Black 539,99 294,5797

Black 539,99 294,5797

Black 539,99 294,5797

Black 539,99 294,5797

Black 539,99 294,5797

сумма сумма

--------------------- ---------------------

27404.84 15214.9616

Color ListPrice StandardCost

--------------- --------------------- ---------------------

Silver 2319,99 1265,6195

Silver 2319,99 1265,6195

Silver 2319,99 1265,6195

Silver 3399,99 1912,1544

Silver 3399,99 1912,1544

Silver 3399,99 1912,1544

Silver 3399,99 1912,1544

Silver 769,49 419,7784

Silver 769,49 419,7784

Silver 769,49 419,7784

Silver 769,49 419,7784

Silver 564,99 308,2179

Silver 564,99 308,2179

Silver 564,99 308,2179

Silver 564,99 308,2179

Silver 564,99 308,2179

сумма сумма

--------------------- ---------------------

26462.84 14665.6792

Color ListPrice StandardCost

--------------- --------------------- ---------------------

White 9,50 3,3963

White 9,50 3,3963

сумма сумма

--------------------- ---------------------

19.00 6.7926

(Обработано строк: 37)

Б. Вычисление общей суммы значений, помещенных в нескольких столбцах

В следующем примере производится вычисление суммы значений столбцов ListPrice и StandardCost для каждого из значений цвета, указанных в таблице Product.

USE AdventureWorks2008R2;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
FROM Production.Product
GROUP BY Color
ORDER BY Color;
GO

Ниже приводится результирующий набор.

Цвет

--------------- --------------------- ---------------------

NULL 4182,32 2238,4755

Black 67436,26 38636,5002

Blue 24015,66 14746,1464

Grey 125,00 51,5625

Multi 478,92 272,2542

Red 53274,10 32610,7661

Silver 36563,13 20060,0483

Silver/Black 448,13 198,97

White 36,98 13,5172

Yellow 34527,29 21507,6521

(Обработано строк: 10)

См. также

Справочник