V MySQL je to SUM()
agregační funkce vrací součet daného výrazu.
Lze jej také použít k vrácení součtu všech odlišných (jedinečných) hodnot ve výrazu.
Syntaxe
Syntaxe vypadá takto:
SUM([DISTINCT] expr) [over_clause]
Ukázková data
Předpokládejme, že máme tabulku nazvanou Products
s následujícími údaji:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Výsledek:
+----------+---------------------------------+--------------+ | 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 | +----------+---------------------------------+--------------+
Příklad
K získání součtu všech cen můžeme použít následující dotaz.
SELECT SUM(ProductPrice)
FROM Products;
Výsledek:
389.70
Zde jsou informace o ceně uloženy v ProductPrice
a tak to předáme jako argument do SUM()
funkce, která pak vypočítá součet a vrátí výsledek.
Nulové hodnoty
SUM()
funkce ignoruje všechny hodnoty NULL. V naší vzorové tabulce výše má perlík ve své ProductPrice
hodnotu NULL sloupec, ale to bylo ve výpočtu ignorováno.
Filtrované výsledky
SUM()
funkce pracuje na řádcích vrácených dotazem. Pokud tedy filtrujete výsledky, výstup SUM()
to bude odrážet.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Výsledek:
78.72
V tomto případě je 78,72 součet všech produktů nabízených zadaným prodejcem.
DISTINCT
Klíčové slovo
Můžete použít DISTINCT
klíčové slovo s SUM()
vypočítat pouze odlišné hodnoty. To znamená, že pokud existují nějaké duplicitní hodnoty, jsou považovány za jednu hodnotu.
Příklad:
SELECT SUM(DISTINCT ProductPrice)
FROM Products;
Výsledek:
363.71
Náš stůl obsahuje dvě položky se stejnou cenou (levý šroubovák a šroubovák pro pravé ruce jsou za cenu 25,99). DISTINCT
Výsledkem klíčového slova je, že obě tyto hodnoty budou považovány za jednu.
Funkce okna
Můžeme použít OVER
klauzule s SUM()
funkce pro vytvoření funkce okna. Viz SQL SUM()
příklad pro začátečníky.