sql >> Databasteknik >  >> RDS >> Mysql

SUM() Funktion i MySQL

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.


  1. Hur man distribuerar ett MariaDB-kluster för hög tillgänglighet

  2. Generera en heltalssekvens i MySQL

  3. FEL:funktioner i indexuttryck måste markeras IMMUTABEL i Postgres

  4. Hur genererar jag ett slumptal för varje rad i ett T-SQL-val?