SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Jak działa SQLite Avg()

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak działa SQLite Sum()

  2. Jak pobrać dwie odpowiedzi Json Json Object i Array

  3. Zamów SQLite według daty1530019888000

  4. SQLite - Eksportuj dane do pliku CSV

  5. 5 sposobów na uruchomienie skryptu SQL z pliku w SQLite