W MySQL funkcja 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.
Składnia
Składnia wygląda tak:
SUM([DISTINCT] expr) [over_clause]
Przykładowe dane
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 | 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 | +----------+---------------------------------+--------------+
Przykład
Możemy użyć następującego zapytania, aby uzyskać sumę wszystkich cen.
SELECT SUM(ProductPrice)
FROM Products;
Wynik:
389.70
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 wszelkie wartości NULL. W naszej przykładowej tabeli powyżej młot ma wartość NULL w swojej ProductPrice
kolumna, ale zostało to zignorowane w obliczeniach.
Przefiltrowane wyniki
SUM()
funkcja działa na wierszach zwróconych przez zapytanie. Więc jeśli filtrujesz wyniki, wyjście 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(DISTINCT ProductPrice)
FROM Products;
Wynik:
363.71
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
Możemy użyć OVER
klauzula z SUM()
funkcja, aby utworzyć funkcję okna. Zobacz SQL SUM()
dla początkujących na przykład.