In MariaDB, de AVG()
functie retourneert de gemiddelde waarde van de gegeven uitdrukking.
De DISTINCT
optie kan worden gebruikt om het gemiddelde van de afzonderlijke waarden te retourneren (d.w.z. verwijder duplicaten voordat het gemiddelde wordt berekend).
NULL
waarden worden genegeerd.
Voorbeeldgegevens
Stel dat we een tabel hebben 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 | 33.49 | | 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 het gemiddelde van alle prijzen te krijgen.
SELECT AVG(ProductPrice)
FROM Products;
Resultaat:
52.898750
In dit geval wordt prijsinformatie opgeslagen in de ProductPrice
kolom, en dus hebben we dat als argument doorgegeven aan de AVG()
functie, die vervolgens het gemiddelde berekende en het resultaat retourneerde.
Gefilterde resultaten
De AVG()
functie werkt op de rijen die door de query worden geretourneerd. Dus als u de resultaten filtert, wordt het resultaat van AVG()
zal dat weerspiegelen.
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Resultaat:
19.680000
In dit geval is 19.680000 de gemiddelde prijs van alle producten die door de opgegeven leverancier worden aangeboden.
De DISTINCT
Zoekwoord
U kunt de DISTINCT
. gebruiken zoekwoord met AVG()
om alleen verschillende waarden te berekenen. Dat wil zeggen, als er dubbele waarden zijn, worden deze als één waarde behandeld.
Voorbeeld:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Resultaat:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
In dit geval delen twee items dezelfde prijs (de linkshandige schroevendraaier en de rechtshandige schroevendraaier kosten beide 25,99). Daarom is de AVG()
functie, indien gebruikt met de DISTINCT
trefwoord, behandelt beide waarden als één en berekent het resultaat dienovereenkomstig.
Vensterfuncties
De AVG()
functie kan worden gebruikt in vensterfuncties. Zie SQL AVG()
voor beginners voor een voorbeeld hiervan.