In MySQL is de SUM()
aggregatiefunctie retourneert de som van een bepaalde uitdrukking.
Het kan ook worden gebruikt om de som van alle afzonderlijke (unieke) waarden in een uitdrukking te retourneren.
Syntaxis
De syntaxis gaat als volgt:
SUM([DISTINCT] expr) [over_clause]
Voorbeeldgegevens
Stel dat we een tabel hebben met de naam Products
met de volgende gegevens:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Resultaat:
+----------+---------------------------------+--------------+ | 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 | +----------+---------------------------------+--------------+
Voorbeeld
We kunnen de volgende zoekopdracht gebruiken om de som van alle prijzen te krijgen.
SELECT SUM(ProductPrice)
FROM Products;
Resultaat:
389.70
Hier wordt prijsinformatie opgeslagen in de ProductPrice
kolom, en dus geven we dat door als argument aan de SUM()
functie, die vervolgens de som berekent en het resultaat retourneert.
Null-waarden
De SUM()
functie negeert alle NULL-waarden. In onze voorbeeldtabel hierboven heeft de voorhamer een NULL-waarde in zijn ProductPrice
kolom, maar dat werd genegeerd in de berekening.
Gefilterde resultaten
De SUM()
functie werkt op de rijen die door de query worden geretourneerd. Dus als u de resultaten filtert, wordt de uitvoer van SUM()
zal dat weerspiegelen.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultaat:
78.72
In dit geval is 78,72 de som van alle producten die door de opgegeven leverancier worden aangeboden.
De DISTINCT
Zoekwoord
U kunt de DISTINCT
. gebruiken zoekwoord met SUM()
om alleen verschillende waarden te berekenen. Dat wil zeggen, als er dubbele waarden zijn, worden deze als één waarde behandeld.
Voorbeeld:
SELECT SUM(DISTINCT ProductPrice)
FROM Products;
Resultaat:
363.71
Onze tabel bevat twee artikelen met dezelfde prijs (de linkshandige schroevendraaier en de rechtshandige schroevendraaier kosten beide 25,99). De DISTINCT
trefwoord resulteert erin dat beide waarden als één worden behandeld.
Vensterfuncties
We kunnen een OVER
. gebruiken clausule met de SUM()
functie om een vensterfunctie te creëren. Zie SQL SUM()
voor beginners bijvoorbeeld.