V SQL Server, SUM()
agregační funkce vrátí 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.
SUM()
funguje pouze na číselných sloupcích. Hodnoty Null jsou ignorovány.
Syntaxe
Syntaxe vypadá takto:
SUM ( [ ALL | DISTINCT ] expression )
Může být také použit s OVER
klauzule:
SUM ([ ALL ] expression) OVER ( [ partition_by_clause ] order_by_clause)
Příklad
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 | 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 | +------------+---------------------------------+----------------+
K získání součtu všech cen můžeme použít následující dotaz.
SELECT SUM(ProductPrice)
FROM Products;
Výsledek:
367.20
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 při výpočtu hodnoty null.
Pokud sloupec obsahuje hodnoty null, může se zobrazit upozornění, že hodnoty null byly odstraněny.
Zde je například varování, které jsem dostal při spuštění výše uvedeného příkladu:
SELECT SUM(ProductPrice)
FROM Products;
Výsledek:
+--------------------+ | (No column name) | |--------------------| | 367.20 | +--------------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
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(ALL ProductPrice) AS "All",
SUM(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Výsledek:
+--------+------------+ | All | Distinct | |--------+------------| | 367.20 | 341.21 | +--------+------------+ Warning: Null value is eliminated by an aggregate or other SET operation.
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
SUM()
funkci lze použít s OVER
klauzule k vytvoření funkce okna. Viz SQL SUM()
příklad pro začátečníky.