De SQLite avg()
functie retourneert de gemiddelde waarde van alle niet-NULL-waarden binnen een groep.
Het accepteert één argument, namelijk de waarde of groep van waarden.
Voorbeeld
Neem de volgende tabel:
ProductId ProductName Price ---------- --------------------- ---------- 1 Blue Widgets (6 Pack) 389.45 2 Widget Holder 139.5 3 Widget Opener 89.27 4 Foobar Set 120.0
We kunnen de avg()
. gebruiken functie om de gemiddelde waarde te halen uit de Prijs kolom. Zoals dit:
SELECT avg(Price) FROM Products;
Resultaat:
184.555
Hoe een WHERE-clausule het resultaat beïnvloedt
Als uw zoekopdracht een WHERE
. gebruikt clausule, wordt het gemiddelde berekend na de WHERE
clausule in werking is getreden. Met andere woorden, u kunt een WHERE
. gebruiken clausule om ervoor te zorgen dat de avg()
functie berekent alleen die rijen waarin u geïnteresseerd bent.
Dit is wat er gebeurt als ik een WHERE
. toevoeg clausule naar het vorige voorbeeld.
SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
Resultaat:
206.073333333333
Het resultaat afronden
Het resultaat wordt geretourneerd als een drijvende-kommawaarde (tenzij het NULL is). U kunt de round()
. gebruiken functie om de waarde naar wens af te ronden.
SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
Resultaat:
206.07
De resultaten beperken
De LIMIT
clausule heeft geen invloed op de berekening van de avg()
functie – er wordt slechts één rij geretourneerd met de avg()
hoe dan ook functioneren.
SELECT avg(Price)
FROM Products
LIMIT 1;
Resultaat:
184.555
Dat gezegd hebbende, zal het opgeven van een limiet van nul ertoe leiden dat er niets wordt geretourneerd.
Strings en BLOB's
String- en BLOB-waarden die niet op getallen lijken, worden geïnterpreteerd als 0.
SELECT avg(ProductName) FROM Products;
Resultaat:
0.0
NULL-argumenten
Als er geen niet-NULL-invoer is, retourneert de functie avg() NULL.
SELECT avg(NULL);
Resultaat:
(Dat resultaat is NULL).
Als er echter ten minste één niet-NULL-argument is, wordt er geen NULL geretourneerd.
Om dit te demonstreren, zal ik hier een nieuwe rij invoegen, maar laat de Prijs kolom op NULL:
INSERT INTO Products (ProductId, ProductName)
VALUES (5, 'Red Widget');
SELECT * FROM Products;
Resultaat:
ProductId ProductName Price ---------- --------------------- ---------- 1 Blue Widgets (6 Pack) 389.45 2 Widget Holder 139.5 3 Widget Opener 89.27 4 Foobar Set 120.0 5 Red Widget
Dus de laatste rij heeft geen prijs - de Prijs kolom is NULL.
Als ik nu de avg()
. gebruik functie, retourneert het nog steeds het gemiddelde van alle niet-NULL-rijen.
SELECT avg(Price) FROM Products;
Resultaat:
184.555
Het DISTINCT-zoekwoord
U kunt de DISTINCT
. gebruiken trefwoord om het gemiddelde van alleen de afzonderlijke waarden in de kolom te berekenen. Dit heeft tot gevolg dat eventuele dubbele waarden uit de berekening worden verwijderd.
Zie Tweak your Avg() Results in SQLite met het DISTINCT Trefwoord voor een voorbeeld.