I MariaDB, AVG()
funktion returnerar medelvärdet för det givna uttrycket.
DISTINCT
alternativet kan användas för att returnera medelvärdet av de distinkta värdena (dvs. ta bort dubbletter innan genomsnittet beräknas).
NULL
värden ignoreras.
Exempeldata
Anta att vi har en tabell 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 | 33.49 | | 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å ett genomsnitt av alla priser.
SELECT AVG(ProductPrice)
FROM Products;
Resultat:
52.898750
I det här fallet lagras prisinformation i ProductPrice
kolumnen, och så skickade vi det som ett argument till AVG()
funktion, som sedan beräknade medelvärdet och returnerade resultatet.
Filtrerade resultat
AVG()
funktionen fungerar på raderna som returneras av frågan. Så om du filtrerar resultaten blir resultatet av AVG()
kommer att återspegla det.
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultat:
19.680000
I det här fallet är 19,680000 genomsnittspriset för alla produkter som erbjuds av den angivna leverantören.
DISTINCT
Nyckelord
Du kan använda DISTINCT
nyckelord med AVG()
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
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Resultat:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
I det här fallet delar två artiklar samma pris (vänsterskruvmejseln och högerskruvmejseln kostar båda 25,99). Därför är AVG()
funktion, när den används med DISTINCT
nyckelord, behandlar båda dessa värden som ett och beräknar resultatet därefter.
Fönsterfunktioner
AVG()
funktion kan användas i fönsterfunktioner. Se SQL AVG()
för nybörjare för ett exempel på detta.