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.