SQLite
 sql >> Database >  >> RDS >> SQLite

SQLite AVG

Riepilogo :in questo tutorial imparerai come usare SQLite AVG funzione per calcolare il valore medio di un insieme di valori.

Introduzione alla funzione SQLite AVG

Il AVG function è una funzione aggregata che calcola il valore medio di tutti i valori non NULL all'interno di un gruppo.

Di seguito viene illustrata la sintassi di AVG funzione:

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

Per impostazione predefinita, il AVG la funzione usa ALL clausola indipendentemente dal fatto che tu la specifichi o meno. Significa che la funzione AVG prenderà tutti i valori non NULL quando calcola il valore medio.

Nel caso in cui desideri calcolare il valore medio di valori distinti (o univoci), devi specificare la clausola DISTINCT in modo esplicito nell'espressione.

Se una colonna memorizza tipi di dati misti come intero, reale, BLOB e testo, SQLite AVG La funzione interpreta il BLOB che non assomiglia a un numero come zero (0).

Il valore di AVG la funzione è sempre un valore in virgola mobile o un NULL valore. Il AVG la funzione restituisce solo un NULL valore se e solo se tutti i valori nel gruppo sono NULL valori.

Puoi fare un rapido test per vedere come funziona la funzione SQLite con vari tipi di dati.

Innanzitutto, crea una nuova tabella denominata avg_tests utilizzando la seguente istruzione:

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

Provalo

Quindi, inserisci alcuni valori misti in avg_tests tabella.

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)

Provalo

Quindi, esegui una query sui dati da avg_tests tabella.

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

Provalo

Successivamente, puoi utilizzare AVG funzione per calcolare la media delle prime quattro righe che contengono solo valori numerici.

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

Provalo

Infine, applica il AVG funzione a tutti i valori in val colonna di avg_tests tabella.

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

Provalo

Hai 9 righe in avg_tests tavolo. La riga 7 è NULL . Pertanto, quando si calcola la media, il AVG la funzione lo ignora e prende 8 righe nel calcolo.

Le prime quattro righe sono i valori interi e reali:1,2, 10.1 e 20.5. La funzione SQLite AVG utilizza questi valori nel calcolo.

La 5a e la 6a riga sono di tipo testo perché abbiamo inserito come "B" e "8". Poiché 8 sembra un numero, quindi SQLite interpreta B come 0 e '8' come 8.

L'ottava e la nona riga sono BLOB tipi che non sembrano numeri, pertanto, SQLite interpreta questi valori come 0.

Il AVG(cal) espressione usa la seguente formula:

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

Vediamo come funziona il DISTINCT la clausola funziona.

Innanzitutto, inserisci una nuova riga in avg_tests la tabella con un valore esiste già.

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

Provalo

In secondo luogo, applica il AVG funzione senza DISTINCT clausola:

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

Provalo

Terzo, aggiungi il DISTINCT clausola alla AVG funzione:

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

Provalo

Perché avg_tests la tabella ha due righe con lo stesso valore 10.1, il AVG(DISTINCT) prende solo una riga per il calcolo. Pertanto, hai ottenuto un risultato diverso.

SQLite AVG esempi pratici di funzioni

Useremo le tracks tabella nel database di esempio per la dimostrazione.

Per calcolare la lunghezza media di tutte le tracce in millisecondi, utilizza la seguente istruzione:

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

Provalo

Funzione SQLite AVG con GROUP BY clausola

Per calcolare la durata media dei brani per ogni album, utilizza il AVG funzione con il GROUP BY clausola.

Innanzitutto, il GROUP BY la clausola raggruppa una serie di brani per album. Quindi, il AVG la funzione calcola la durata media dei brani per ciascun album.

Vedi la seguente dichiarazione.

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

Provalo

SQLite AVG funzione con INNER JOIN esempio di clausola

Per ottenere il titolo dell'album insieme al albumid colonna, usi la clausola INNER JOIN nell'istruzione precedente come la seguente query:

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)

Provalo

Nota che abbiamo usato il ROUND funzione per arrotondare il valore mobile a 2 cifre a destra della virgola decimale.

Funzione SQLite AVG con esempio di clausola HAVING

Puoi utilizzare il AVG funzione o l'alias della sua colonna nella clausola HAVING per filtrare i gruppi. La seguente istruzione ottiene solo gli album la cui lunghezza media è compresa tra 100000 e 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)

Provalo

In questo tutorial, ti abbiamo mostrato come utilizzare SQLite AVG funzione per calcolare i valori medi di valori non NULL in un gruppo.