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.2
Code 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.