В MariaDB, AVG()
функцията връща средната стойност на дадения израз.
DISTINCT
опцията може да се използва за връщане на средната стойност на отделните стойности (т.е. премахване на дубликати, преди да се изчисли средната стойност).
NULL
стойностите се игнорират.
Примерни данни
Да предположим, че имаме таблица със следните данни:
SELECT
VendorId,
ProductName,
ProductPrice
FROM Products;
Резултат:
+----------+---------------------------------+--------------+ | 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 | +----------+---------------------------------+--------------+
Пример
Можем да използваме следната заявка, за да получим средната стойност на всички цени.
SELECT AVG(ProductPrice)
FROM Products;
Резултат:
52.898750
В този случай информацията за цената се съхранява в ProductPrice
колона и затова го предадохме като аргумент на AVG()
функция, която след това изчислява средната стойност и връща резултата.
Филтрирани резултати
AVG()
функцията работи с редовете, върнати от заявката. Така че, ако филтрирате резултатите, резултатът от AVG()
ще отрази това.
SELECT AVG(ProductPrice)
FROM Products
WHERE VendorId = 1001;
Резултат:
19.680000
В този случай 19,680000 е средната цена на всички продукти, предлагани от посочения доставчик.
DISTINCT
Ключова дума
Можете да използвате DISTINCT
ключова дума с AVG()
за изчисляване само на различни стойности. Тоест, ако има дублиращи се стойности, те се третират като една стойност.
Пример:
SELECT
AVG(ProductPrice) AS "All",
AVG(DISTINCT ProductPrice) AS "Distinct"
FROM Products;
Резултат:
+-----------+-----------+ | All | Distinct | +-----------+-----------+ | 52.898750 | 56.742857 | +-----------+-----------+
В този случай два артикула споделят една и съща цена (отвертката с лява ръка и дясна отвертка са на цена 25,99). Следователно, AVG()
функция, когато се използва с DISTINCT
ключова дума, третира и двете стойности като една и съответно изчислява резултата си.
Функции на прозореца
AVG()
функцията може да се използва във функциите на прозореца. Вижте SQL AVG()
за начинаещи за пример за това.