Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Funkcja SUM() w SQL Server

W SQL Server SUM() funkcja agregująca zwraca sumę danego wyrażenia.

Może być również użyty do zwrócenia sumy wszystkich odrębnych (unikalnych) wartości w wyrażeniu.

SUM() działa tylko w kolumnach liczbowych. Wartości puste są ignorowane.

Składnia

Składnia wygląda tak:

SUM ( [ ALL | DISTINCT ] expression ) 

Może być również używany z OVER klauzula:

SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)

Przykład

Załóżmy, że mamy tabelę o nazwie Products z następującymi danymi:

SELECT
    VendorId,
    ProductName,
    ProductPrice
FROM Products;

Wynik:

+------------+---------------------------------+----------------+
| 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          |
+------------+---------------------------------+----------------+

Możemy użyć następującego zapytania, aby uzyskać sumę wszystkich cen.

SELECT SUM(ProductPrice)
FROM Products;

Wynik:

367.20

Tutaj informacje o cenie są przechowywane w ProductPrice kolumna, więc przekazujemy to jako argument do SUM() funkcja, która następnie oblicza sumę i zwraca wynik.

Wartości puste

SUM() funkcja ignoruje wartości null podczas wykonywania obliczeń.

Jeśli kolumna zawiera wartości null, możesz zobaczyć ostrzeżenie wskazujące, że wartości null zostały wyeliminowane.

Na przykład, oto ostrzeżenie, które otrzymałem po uruchomieniu powyższego przykładu:

SELECT SUM(ProductPrice)
FROM Products;

Wynik:

+--------------------+
| (No column name)   |
|--------------------|
| 367.20             |
+--------------------+
Warning: Null value is eliminated by an aggregate or other SET operation.

Przefiltrowane wyniki

SUM() funkcja działa na wierszach zwróconych przez zapytanie. Więc jeśli filtrujesz wyniki, wynik SUM() odzwierciedli to.

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

Wynik:

78.72

W tym przypadku 78,72 to suma wszystkich produktów oferowanych przez określonego dostawcę.

DISTINCT Słowo kluczowe

Możesz użyć DISTINCT słowo kluczowe z SUM() aby obliczyć tylko różne wartości. Oznacza to, że jeśli istnieją jakiekolwiek zduplikowane wartości, są one traktowane jako jedna wartość.

Przykład:

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

Wynik:

+--------+------------+
| All    | Distinct   |
|--------+------------|
| 367.20 | 341.21     |
+--------+------------+
Warning: Null value is eliminated by an aggregate or other SET operation.

Nasz stół zawiera dwie pozycje w tej samej cenie (wkrętak leworęczny i śrubokręt praworęczny mają cenę 25,99). DISTINCT słowo kluczowe powoduje, że obie te wartości są traktowane jako jedna.

Funkcje okien

SUM() funkcja może być używana z OVER klauzula, aby utworzyć funkcję okna. Zobacz SQL SUM() dla początkujących na przykład.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw dane w SQL Server 2017

  2. Statystyka przyrostowa programu SQL Server 2014

  3. Najlepsze narzędzie do odzyskiwania SQL na rok 2020 do odzyskiwania kluczowej bazy danych SQL

  4. Zrozumienie aliasu kolumny w wybranym zapytaniu w SQL Server — samouczek SQL Server / TSQL, część 115

  5. Jak usunąć konto pocztowe bazy danych z profilu w programie SQL Server (T-SQL)