I MariaDB er AVG()
funktion returnerer gennemsnitsværdien af det givne udtryk.
DISTINCT
mulighed kan bruges til at returnere gennemsnittet af de forskellige værdier (dvs. fjern dubletter før gennemsnittet beregnes).
NULL
værdier ignoreres.
Eksempel på data
Antag, at vi har en tabel med følgende 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 | +----------+---------------------------------+--------------+
Eksempel
Vi kan bruge følgende forespørgsel til at få gennemsnittet af alle priser.
SELECT AVG(ProductPrice)
FROM Products;
Resultat:
52.898750
I dette tilfælde gemmes prisoplysninger i ProductPrice
kolonne, og så vi sendte det som et argument til AVG()
funktion, som derefter beregnede gennemsnittet og returnerede resultatet.
Filtrerede resultater
AVG()
funktionen fungerer på de rækker, der returneres af forespørgslen. Så hvis du filtrerer resultaterne, vil resultatet af AVG()
vil afspejle det.
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultat:
19.680000
I dette tilfælde er 19,680000 gennemsnitsprisen for alle de produkter, der tilbydes af den angivne leverandør.
DISTINCT
Søgeord
Du kan bruge DISTINCT
søgeord med AVG()
kun at beregne distinkte værdier. Det vil sige, at hvis der er nogen duplikerede værdier, behandles de som én værdi.
Eksempel:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Resultat:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
I dette tilfælde deler to varer den samme pris (venstrehåndsskruetrækker og højrehåndsskruetrækker er begge prissat til 25,99). Derfor er AVG()
funktion, når den bruges sammen med DISTINCT
søgeord, behandler begge disse værdier som én og beregner resultatet i overensstemmelse hermed.
Vinduefunktioner
AVG()
funktion kan bruges i vinduesfunktioner. Se SQL AVG()
for begyndere for et eksempel på dette.