I MySQL, SUM()
aggregatfunktion returnerar summan av ett givet uttryck.
Den kan också användas för att returnera summan av alla distinkta (unika) värden i ett uttryck.
Syntax
Syntaxen ser ut så här:
SUM([DISTINCT] expr) [over_clause]
Exempeldata
Anta att vi har en tabell som heter Products
med följande data:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Resultat:
+----------+---------------------------------+--------------+ | 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 | +----------+---------------------------------+--------------+
Exempel
Vi kan använda följande fråga för att få summan av alla priser.
SELECT SUM(ProductPrice)
FROM Products;
Resultat:
389.70
Här lagras prisinformation i ProductPrice
kolumnen, och så skickar vi det som ett argument till SUM()
funktion, som sedan beräknar summan och returnerar resultatet.
Nullvärden
SUM()
funktionen ignorerar alla NULL-värden. I vår exempeltabell ovan har släggan fått ett NULL-värde i sitt ProductPrice
kolumn, men det ignorerades i beräkningen.
Filtrerade resultat
SUM()
funktionen fungerar på raderna som returneras av frågan. Så om du filtrerar resultaten, utdata från SUM()
kommer att återspegla det.
SELECT SUM(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultat:
78.72
I det här fallet är 78,72 summan av alla produkter som erbjuds av den angivna leverantören.
DISTINCT
Nyckelord
Du kan använda DISTINCT
nyckelord med SUM()
för att endast beräkna distinkta värden. Det vill säga, om det finns några dubbletter av värden, behandlas de som ett värde.
Exempel:
SELECT SUM(DISTINCT ProductPrice)
FROM Products;
Resultat:
363.71
Vårt bord innehåller två artiklar med samma pris (vänsterskruvmejseln och högerskruvmejseln kostar båda 25,99). DISTINCT
sökord leder till att båda dessa värden behandlas som ett.
Fönsterfunktioner
Vi kan använda en OVER
sats med SUM()
funktion för att skapa en fönsterfunktion. Se SQL SUM()
för nybörjare som ett exempel.