SQLite avg()
funkcja zwraca średnią wartość wszystkich wartości innych niż NULL w grupie.
Przyjmuje jeden argument, który jest wartością lub grupą wartości.
Przykład
Weź poniższą 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
Możemy użyć avg()
funkcja, aby uzyskać średnią wartość z Ceny kolumna. Tak:
SELECT avg(Price) FROM Products;
Wynik:
184.555
Jak klauzula WHERE wpływa na wynik
Jeśli zapytanie zawiera WHERE
klauzula, średnia zostanie obliczona po WHERE
weszła w życie klauzula. Innymi słowy, możesz użyć WHERE
klauzula zapewniająca, że avg()
funkcja oblicza tylko te wiersze, które Cię interesują.
Oto, co się stanie, jeśli dodam WHERE
klauzula do poprzedniego przykładu.
SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
Wynik:
206.073333333333
Zaokrąglij wynik
Wynik jest zwracany jako wartość zmiennoprzecinkowa (chyba że ma wartość NULL). Możesz użyć round()
funkcja, aby zaokrąglić wartość zgodnie z wymaganiami.
SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
Wynik:
206.07
Ograniczanie wyników
LIMIT
klauzula nie wpływa na obliczanie avg()
funkcja – zwracany jest tylko jeden wiersz z avg()
funkcjonować mimo to.
SELECT avg(Price)
FROM Products
LIMIT 1;
Wynik:
184.555
To powiedziawszy, podanie limitu równego zero spowoduje, że nic nie zostanie zwrócone.
Ciągi i bloki BLOB
Wartości łańcuchowe i BLOB, które nie wyglądają jak liczby, są interpretowane jako 0.
SELECT avg(ProductName) FROM Products;
Wynik:
0.0
Argumenty NULL
Jeśli nie ma danych wejściowych innych niż NULL, funkcja avg() zwraca NULL.
SELECT avg(NULL);
Wynik:
(Ten wynik to NULL).
Jeśli jednak istnieje co najmniej jeden argument inny niż NULL, nie zwróci on NULL.
Aby to zademonstrować, wstawię tutaj nowy wiersz, ale zostawię Cena kolumna na NULL:
INSERT INTO Products (ProductId, ProductName)
VALUES (5, 'Red Widget');
SELECT * FROM Products;
Wynik:
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
Tak więc ostatni wiersz nie zawiera ceny – Cena kolumna ma wartość NULL.
Teraz, kiedy używam avg()
funkcja, nadal zwraca średnią wszystkich wierszy innych niż NULL.
SELECT avg(Price) FROM Products;
Wynik:
184.555
DISTINCT Słowo kluczowe
Możesz użyć DISTINCT
słowo kluczowe, aby obliczyć średnią tylko odrębnych wartości w kolumnie. Powoduje to usunięcie wszelkich zduplikowanych wartości z obliczeń.
Zobacz Dopasowanie wyników Avg() w SQLite za pomocą słowa kluczowego DISTINCT jako przykład.