SQLite avg()
функцията връща средната стойност на всички стойности, различни от NULL в групата.
Той приема един аргумент, който е стойността или групата стойности.
Пример
Вземете следната таблица:
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
Можем да използваме avg()
функция, за да получите средната стойност от Цена колона. Като това:
SELECT avg(Price) FROM Products;
Резултат:
184.555
Как клауза WHERE влияе върху резултата
Ако вашата заявка използва WHERE
клауза, средната стойност ще бъде изчислена след WHERE
клаузата е влязла в сила. С други думи, можете да използвате WHERE
клауза, за да се гарантира, че avg()
функцията изчислява само тези редове, които ви интересуват.
Ето какво се случва, ако добавя WHERE
клауза към предишния пример.
SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
Резултат:
206.073333333333
Закръглете резултата
Резултатът се връща като стойност с плаваща запетая (освен ако не е NULL). Можете да използвате round()
функция за закръгляване на стойността според изискванията.
SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
Резултат:
206.07
Ограничаване на резултатите
LIMIT
клаузата не засяга изчисляването на avg()
функция – само един ред се връща с avg()
функционира така или иначе.
SELECT avg(Price)
FROM Products
LIMIT 1;
Резултат:
184.555
Въпреки това, предоставянето на ограничение от нула няма да доведе до връщане на нищо.
Стрингове и BLOB
Стойности на низ и BLOB, които не изглеждат като числа, се интерпретират като 0.
SELECT avg(ProductName) FROM Products;
Резултат:
0.0
NULL аргументи
Ако няма входове, различни от NULL, функцията avg() връща NULL.
SELECT avg(NULL);
Резултат:
(Този резултат е NULL).
Ако обаче има поне един аргумент, различен от NULL, той няма да върне NULL.
За да демонстрирам това, тук ще вмъкна нов ред, но ще оставя Цена колона на NULL:
INSERT INTO Products (ProductId, ProductName)
VALUES (5, 'Red Widget');
SELECT * FROM Products;
Резултат:
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
Така че последният ред няма цена – Цена колоната е NULL.
Сега, когато използвам avg()
функция, тя все още връща средната стойност на всички редове, които не са NULL.
SELECT avg(Price) FROM Products;
Резултат:
184.555
Ключовата дума DISTINCT
Можете да използвате DISTINCT
ключова дума, за да се изчисли средната стойност само на отделните стойности в колоната. Това води до премахване на всички дублиращи се стойности от изчислението.
Вижте „Настройване на вашите Avg() резултати в SQLite с ключовата дума DISTINCT за пример.