SQLite avg()
funkce vrací průměrnou hodnotu všech hodnot, které nejsou NULL v rámci skupiny.
Přijímá jeden argument, kterým je hodnota nebo skupina hodnot.
Příklad
Vezměte si následující tabulku:
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
Můžeme použít avg()
k získání průměrné hodnoty z Ceny sloupec. Takhle:
SELECT avg(Price) FROM Products;
Výsledek:
184.555
Jak klauzule WHERE ovlivňuje výsledek
Pokud váš dotaz používá WHERE
klauzule, bude průměr vypočítán za WHERE
doložka vstoupila v platnost. Jinými slovy, můžete použít WHERE
klauzule, která zajistí, že avg()
funkce vypočítá pouze ty řádky, které vás zajímají.
Zde je to, co se stane, když přidám WHERE
klauzule k předchozímu příkladu.
SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
Výsledek:
206.073333333333
Zaokrouhlit výsledek
Výsledek je vrácen jako hodnota s plovoucí desetinnou čárkou (pokud není NULL). Můžete použít round()
funkci zaokrouhlit hodnotu podle potřeby.
SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
Výsledek:
206.07
Omezení výsledků
LIMIT
klauzule neovlivňuje výpočet avg()
funkce – je vrácen pouze jeden řádek s avg()
stejně fungovat.
SELECT avg(Price)
FROM Products
LIMIT 1;
Výsledek:
184.555
To znamená, že poskytnutím limitu nula nebude vráceno nic.
Řetězce a objekty BLOB
Hodnoty řetězců a BLOB, které nevypadají jako čísla, jsou interpretovány jako 0.
SELECT avg(ProductName) FROM Products;
Výsledek:
0.0
Argumenty NULL
Pokud neexistují žádné jiné vstupy než NULL, funkce avg() vrátí hodnotu NULL.
SELECT avg(NULL);
Výsledek:
(Tento výsledek je NULL).
Pokud však existuje alespoň jeden argument jiný než NULL, nevrátí hodnotu NULL.
Abych to demonstroval, zde vložím nový řádek, ale ponechám Cena sloupec na NULL:
INSERT INTO Products (ProductId, ProductName)
VALUES (5, 'Red Widget');
SELECT * FROM Products;
Výsledek:
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
Poslední řádek tedy nemá cenu – Cena sloupec je NULL.
Nyní, když použiji avg()
funkce, stále vrací průměr všech řádků, které nejsou NULL.
SELECT avg(Price) FROM Products;
Výsledek:
184.555
Klíčové slovo DISTINCT
Můžete použít DISTINCT
klíčové slovo pro výpočet průměru pouze odlišných hodnot ve sloupci. To má za následek odstranění jakýchkoli duplicitních hodnot z výpočtu.
Příklad viz Vyladění výsledků Avg() v SQLite pomocí klíčového slova DISTINCT.