В MySQL, SUM()
агрегатната функция връща сумата от даден израз.
Може също да се използва за връщане на сумата от всички различни (уникални) стойности в израз.
Синтаксис
Синтаксисът е така:
SUM([DISTINCT] expr) [over_clause]
Примерни данни
Да предположим, че имаме таблица, наречена Products
със следните данни:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Резултат:
+----------+---------------------------------+--------------+ | VendorId | ProductName | ProductPrice | +----------+---------------------------------+--------------+ | 1001 | Left handed screwdriver | 25.99 | | 1001 | Right handed screwdriver | 25.99 | | 1001 | Long Weight (blue) | 14.75 | | 1001 | Long Weight (green) | 11.99 | | 1002 | Sledge Hammer | NULL | | 1003 | Chainsaw | 245.00 | | 1003 | Straw Dog Box | 55.99 | | 1004 | Bottomless Coffee Mugs (4 Pack) | 9.99 | +----------+---------------------------------+--------------+
Пример
Можем да използваме следната заявка, за да получим сумата от всички цени.
SELECT SUM(ProductPrice)
FROM Products;
Резултат:
389.70
Тук информацията за цената се съхранява в ProductPrice
колона и затова предаваме това като аргумент на SUM()
функция, която след това изчислява сумата и връща резултата.
Нулеви стойности
SUM()
функцията игнорира всички NULL стойности. В нашата примерна таблица по-горе чукът има стойност NULL в своя ProductPrice
колона, но това беше игнорирано при изчислението.
Филтрирани резултати
SUM()
функцията работи с редовете, върнати от заявката. Така че, ако филтрирате резултатите, изходът на SUM()
ще отрази това.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Резултат:
78.72
В този случай 78,72 е сумата от всички продукти, предлагани от посочения доставчик.
DISTINCT
Ключова дума
Можете да използвате DISTINCT
ключова дума с SUM()
за изчисляване само на различни стойности. Тоест, ако има дублиращи се стойности, те се третират като една стойност.
Пример:
SELECT SUM(DISTINCT ProductPrice)
FROM Products;
Резултат:
363.71
Нашата таблица съдържа два артикула с една и съща цена (отвертката за лява ръка и отвертката за дясна са на цена 25,99). DISTINCT
ключова дума води до това, че и двете стойности се третират като една.
Функции на прозореца
Можем да използваме OVER
клауза с SUM()
функция за създаване на прозоречна функция. Вижте SQL SUM()
за начинаещи за пример.