V MariaDB, 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)
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 | 33.49 | | 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:
423.19
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.
Filtrované výsledky
SUM()
funkce pracuje na řádcích vrácených dotazem. Pokud tedy filtrujete výsledky, výsledek 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:
397.20
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.