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.