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

Oprogramowanie SQLite AVG

Podsumowanie :w tym samouczku dowiesz się, jak używać SQLite AVG funkcja do obliczenia średniej wartości zbioru wartości.

Wprowadzenie do funkcji SQLite AVG

AVG funkcja to funkcja agregująca, która oblicza średnią wartość wszystkich wartości innych niż NULL w grupie.

Poniższe ilustruje składnię AVG funkcja:

AVG([ALL | DISTINCT] expression);Code language: SQL (Structured Query Language) (sql)

Domyślnie AVG funkcja używa ALL klauzulę, czy to określisz, czy nie. Oznacza to, że funkcja AVG przy obliczaniu wartości średniej przyjmie wszystkie wartości inne niż NULL.

Jeśli chcesz obliczyć średnią wartość odrębnych (lub unikalnych) wartości, musisz wyraźnie określić klauzulę DISTINCT w wyrażeniu.

Jeśli kolumna przechowuje mieszane typy danych, takie jak liczba całkowita, rzeczywista, BLOB i tekst, SQLite AVG funkcja interpretuje BLOB, który nie wygląda jak liczba, jako zero (0).

Wartość AVG funkcja jest zawsze wartością zmiennoprzecinkową lub NULL wartość. AVG funkcja zwraca tylko NULL wartość jeśli i tylko wtedy wszystkie wartości w grupie są NULL wartości.

Możesz wykonać szybki test, aby zobaczyć, jak funkcja SQLite działa z różnymi typami danych.

Najpierw utwórz nową tabelę o nazwie avg_tests używając następującego oświadczenia:

CREATE TABLE avg_tests (val);Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Następnie wstaw kilka mieszanych wartości do avg_tests tabela.

INSERT INTO avg_tests (val)
VALUES
 (1),
 (2),
 (10.1),
 (20.5),
 ('8'),
 ('B'),
 (NULL),
 (x'0010'),
 (x'0011');Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Następnie zapytaj o dane z avg_tests tabela.

SELECT rowid,
       val
  FROM avg_tests;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Następnie możesz użyć AVG funkcja do obliczenia średniej z pierwszych czterech wierszy zawierających tylko wartości liczbowe.

SELECT
	avg(val)
FROM
	avg_tests
WHERE
	rowid < 5;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Na koniec zastosuj AVG funkcji do wszystkich wartości w val kolumna avg_tests tabela.

SELECT
	avg(val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Masz 9 wierszy w avg_tests stół. Wiersz 7 to NULL . Dlatego przy obliczaniu średniej AVG funkcja ignoruje to i bierze 8 wierszy do obliczeń.

Pierwsze cztery wiersze to wartości całkowite i rzeczywiste:1,2, 10,1 i 20,5. Funkcja SQLite AVG używa tych wartości w obliczeniach.

Piąty i szósty wiersz to wiersze tekstowe, ponieważ wstawiliśmy „B” i „8”. Ponieważ 8 wygląda jak liczba, dlatego SQLite interpretuje B jako 0, a „8” jako 8.

8 i 9 wiersz to BLOB typy, które nie wyglądają jak liczby, dlatego SQLite interpretuje te wartości jako 0.

AVG(cal) wyrażenie używa następującej formuły:

AVG(val) = (1 + 2 + 10.1 + 20.5 + 8 + 0 + 0 + 0 )/ 8 = 5.2Code language: SQL (Structured Query Language) (sql)

Zobaczmy, jak DISTINCT klauzula działa.

Najpierw wstaw nowy wiersz do avg_tests tabela z wartością już istnieje.

INSERT INTO avg_tests (val)
VALUES (10.1);Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Po drugie, zastosuj AVG funkcja bez DISTINCT klauzula:

SELECT
	avg(val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Po trzecie, dodaj DISTINCT klauzula AVG funkcja:

SELECT
	avg(DISTINCT val)
FROM
	avg_tests;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Ponieważ avg_tests tabela ma dwa wiersze o tej samej wartości 10.1, AVG(DISTINCT) bierze do obliczeń tylko jeden wiersz. Dlatego uzyskałeś inny wynik.

SQLite AVG praktyczne przykłady funkcji

Użyjemy tracks tabeli w przykładowej bazie danych do demonstracji.

Aby obliczyć średnią długość wszystkich ścieżek w milisekundach, użyj następującej instrukcji:

SELECT
	avg(milliseconds)
FROM
	tracks;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Funkcja SQLite AVG z GROUP BY klauzula

Aby obliczyć średnią długość utworów dla każdego albumu, użyj AVG funkcja z GROUP BY klauzula.

Najpierw GROUP BY klauzula grupuje zestaw utworów według albumów. Następnie AVG funkcja oblicza średnią długość utworów dla każdego albumu.

Zobacz następujące oświadczenie.

SELECT
	albumid,
	avg(milliseconds)
FROM
	tracks
GROUP BY
	albumid;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

SQLite AVG funkcja z INNER JOIN przykład klauzuli

Aby uzyskać tytuł albumu wraz z albumid kolumna, używasz klauzuli INNER JOIN w powyższej instrukcji, tak jak w następującym zapytaniu:

SELECT
	tracks.AlbumId,
	Title,
	round(avg(Milliseconds), 2) avg_length
FROM
	tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
	tracks.albumid;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

Zauważ, że użyliśmy ROUND funkcja zaokrąglająca wartość zmiennoprzecinkową do 2 cyfr na prawo od przecinka dziesiętnego.

Funkcja SQLite AVG z przykładem klauzuli HAVING

Możesz użyć albo AVG funkcji lub alias jej kolumny w klauzuli HAVING do filtrowania grup. Poniższe stwierdzenie zawiera tylko albumy, których średnia długość wynosi od 100000 do 200000.

SELECT
	tracks.albumid,
	title,
	round(avg(milliseconds),2)  avg_leng
FROM
	tracks
INNER JOIN albums ON albums.AlbumId = tracks.albumid
GROUP BY
	tracks.albumid
HAVING
	avg_leng BETWEEN 100000 AND 200000;Code language: SQL (Structured Query Language) (sql)

Wypróbuj

W tym samouczku pokazaliśmy, jak używać SQLite AVG funkcja obliczania średnich wartości innych niż NULL w grupie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android Room Embedded Relation ignoruje SQL, gdzie warunek

  2. Nie można zaktualizować wiersza w Sqlite w systemie Android, ale nie zgłasza żadnego błędu

  3. Jak poprawnie zamknąć kursor w Androidzie

  4. Ograniczenia SQLite CHECK

  5. Zaktualizuj dane aktywności z usługi po jej wstrzymaniu