Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Функция SUM() в SQL Server

В 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 | Име на продукта | Цена на продукта ||-----------+--------------------------------+ ----------------|| 1001 | Отвертка с лява ръка | 25,99 || 1001 | Дълго тегло (синьо) | 14,75 || 1001 | Дълго тегло (зелено) | 11,99 || 1002 | Малка чук | 33,49 || 1003 | Верижен трион | 245,00 || 1003 | Кутия за сламени кучета | NULL || 1004 | Чаши за кафе без дъно (4 пакета) | 9,99 || 1001 | Отвертка с дясна ръка | 25,99 |+-----------+--------------------------------+ ----------------+

Можем да използваме следната заявка, за да получим сумата от всички цени.

SELECT SUM(ProductPrice)
FROM Products; 

Резултат:

367,20

Тук информацията за цената се съхранява в ProductPrice колона и затова предаваме това като аргумент на SUM() функция, която след това изчислява сумата и връща резултата.

Нулеви стойности

SUM() функцията игнорира нулеви стойности, когато извършва своето изчисление.

Ако колоната съдържа нулеви стойности, може да видите предупреждение, което показва, че нулевите стойности са били елиминирани.

Например, ето предупреждението, което получих при изпълнение на горния пример:

SELECT SUM(ProductPrice)
FROM Products; 

Резултат:

+-------------------+| (Без име на колона) ||-------------------|| 367.20 |+--------------------+Предупреждение:Нулевата стойност се елиминира чрез агрегат или друга операция SET.

Филтрирани резултати

SUM() функцията работи с редовете, върнати от заявката. Така че, ако филтрирате резултатите, резултатът от SUM() ще отрази това.

SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001; 

Резултат:

78,72

В този случай 78,72 е сумата от всички продукти, предлагани от посочения доставчик.

DISTINCT Ключова дума

Можете да използвате DISTINCT ключова дума с SUM() за изчисляване само на различни стойности. Тоест, ако има дублиращи се стойности, те се третират като една стойност.

Пример:

SELECT 
    SUM(ALL ProductPrice) AS "All",
    SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products; 

Резултат:

<пред>+--------+-----------+| Всички | Различни ||--------+------------|| 367,20 | 341.21 |+--------+-----------+Предупреждение:Нулевата стойност се елиминира чрез агрегат или друга операция SET.

Нашата таблица съдържа два артикула с една и съща цена (отвертката за лява ръка и отвертката за дясна са на цена 25,99). DISTINCT ключова дума води до това, че и двете стойности се третират като една.

Функции на прозореца

SUM() функцията може да се използва с OVER клауза за създаване на прозоречна функция. Вижте SQL SUM() за начинаещи за пример.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server произволно сортиране

  2. SQL Server 2008 разделител на хиляди за колона

  3. Ляво подреждане в SQL Server – 3 еквивалента на LPAD().

  4. Как да вмъкнете блоб в база данни с помощта на sql сървърно студио за управление

  5. Различно представяне на UUID в Java Hibernate и SQL Server