В этом руководстве вы узнаете, как использовать функцию SQL Server SUM() для вычисления суммы значений.
- Введение в функцию SUM() SQL Server
- ВСЕ против ОТДЕЛЬНЫХ
- Примеры функции SUM() SQL Server
- 1) Пример базовой функции SQL Server SUM()
- 2) Использование функции SUM() с примером GROUP BY
- 3) Пример использования функции SUM() с предложением HAVING
- 4) Использование функции SUM() с примером выражения
- Краткое содержание
Введение в функцию SUM() SQL Server
Функция SUM() SQL Server — это агрегатная функция, которая вычисляет сумму всех или отдельных значений в выражении.
Вот синтаксис функции SUM():
SUM([ALL | DISTINCT ] expression)
В этом синтаксисе:
- ALL указывает функции SUM() возвращать сумму всех значений, включая дубликаты. ALL используется по умолчанию.
- DISTINCT указывает функции SUM() вычислить сумму единственных различных значений.
- выражение — это любое допустимое выражение, возвращающее точное или приблизительное числовое значение. Обратите внимание, что агрегатные функции или подзапросы не принимаются в выражении.
Функция SUM() игнорирует значения NULL.
ВСЕ против ОТДЕЛЬНЫХ
Давайте создадим новую таблицу, чтобы продемонстрировать разницу между параметрами ALL и DISTINCT:
CREATE TABLE t( val INT ); INSERT INTO t(val) VALUES(1),(2),(3),(3),(4),(NULL),(5); SELECT val FROM t;
Выход:
val ----------- 1 2 3 3 4 NULL 5 (7 rows affected)
Следующий оператор использует функцию SUM() для вычисления суммы всех значений в столбце val:
SELECT SUM(val) total FROM t;
Выход:
total ----------- 18 Warning: Null value is eliminated by an aggregate or other SET operation. (1 row affected)
Однако при использовании модификатора DISTINCT функция SUM() возвращает сумму уникальных значений в столбце val:
SELECT SUM(DISTINCT val) total FROM t;
Выход:
total ----------- 15 Warning: Null value is eliminated by an aggregate or other SET operation. (1 row affected)
Примеры функции SUM() SQL Server
Давайте рассмотрим несколько практических примеров использования функции SUM(). Для демонстрации мы будем использовать таблицы из примера базы данных.
1) Пример базовой функции SQL Server SUM()
В следующем операторе функция SUM() используется для расчета общих запасов всех товаров во всех магазинах:
SELECT SUM(quantity) total_stocks FROM production.stocks;
Выход:
total_stocks ------------ 13511 (1 row affected)
2) Использование функции SUM() с примером GROUP BY
В следующем операторе используется функция SUM() с предложением GROUP BY для поиска общего количества запасов по идентификатору магазина:
SELECT store_id, SUM(quantity) store_stocks FROM production.stocks GROUP BY store_id;
Вот что получилось:
store_id | store_stocks ---------+------------ 1 | 4532 2 | 4359 3 | 4620 (3 rows)
В этом примере:
- Во-первых, предложение GROUP BY разделило запасы по идентификатору магазина на группы.
- Во-вторых, функция SUM() применяется к каждой группе для расчета общих запасов для каждой группы.
Если вы хотите отобразить название магазина вместо идентификатора магазина, вы можете использовать следующий оператор:
SELECT store_name, SUM(quantity) store_stocks FROM production.stocks w INNER JOIN sales.stores s ON s.store_id = w.store_id GROUP BY store_name;
Выход:
store_name | store_stocks -----------------+------------ Baldwin Bikes | 4359 Rowlett Bikes | 4620 Santa Cruz Bikes | 4532 (3 rows)
3) Пример использования функции SUM() с предложением HAVING
В следующем операторе используется функция SUM() в предложении HAVING для поиска запасов каждого продукта и возврата только тех продуктов, запасы которых превышают 100:
SELECT product_name, SUM(quantity) total_stocks FROM production.stocks s INNER JOIN production.products p ON p.product_id = s.product_id GROUP BY product_name HAVING SUM(quantity) > 100 ORDER BY total_stocks DESC;
Выход:
product_name | total_stocks ------------------------------------------------------+-------------- Electra Townie Original 7D - 2017 | 125 Electra Townie Balloon 8D EQ Ladies' - 2016/2017/2018 | 121 Electra Townie Go! 8i - 2017/2018 | 120 Electra Townie Commute 8D - 2018 | 119 Sun Bicycles Cruz 7 - 2017 | 115 Surly Straggler - 2018 | 109 Sun Bicycles Cruz 3 - 2017 | 109 Electra Townie Original 21D - 2018 | 109 Electra Girl's Hawaii 1 16" - 2017 | 107 (9 rows)\
4) Использование функции SUM() с примером выражения
В следующем примере выражение в функции SUM() используется для расчета чистой стоимости каждого заказа на продажу:
SELECT order_id, SUM( quantity * list_price *(1 - discount) ) net_value FROM sales.order_items GROUP BY order_id ORDER BY net_value DESC;
Выход:
order_id | net_value ---------+------------ 1541 | 29147.0264 937 | 27050.7182 1506 | 25574.9555 1482 | 25365.4344 ...
Краткое содержание
- Используйте функцию SUM() для вычисления суммы значений.
- Используйте опцию DISTINCT для расчета суммы различных значений.
- Используйте опцию ALL для расчета суммы всех значений, включая дубликаты.