SQLite avg()
La funzione restituisce il valore medio di tutti i valori non NULL all'interno di un gruppo.
Accetta un argomento, che è il valore o il gruppo di valori.
Esempio
Prendi la seguente tabella:
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
Possiamo usare avg()
funzione per ottenere il valore medio dal Prezzo colonna. In questo modo:
SELECT avg(Price) FROM Products;
Risultato:
184.555
Come una clausola WHERE influisce sul risultato
Se la tua query utilizza un WHERE
clausola, la media sarà calcolata dopo il WHERE
la clausola è entrata in vigore. In altre parole, puoi usare un WHERE
clausola per garantire che avg()
la funzione calcola solo le righe che ti interessano.
Ecco cosa succede se aggiungo un WHERE
clausola all'esempio precedente.
SELECT avg(Price)
FROM Products
WHERE ProductName LIKE '%widget%';
Risultato:
206.073333333333
Arrotonda il risultato
Il risultato viene restituito come valore in virgola mobile (a meno che non sia NULL). Puoi usare round()
funzione per arrotondare il valore come richiesto.
SELECT round(avg(Price), 2)
FROM Products
WHERE ProductName LIKE '%widget%';
Risultato:
206.07
Limitazione dei risultati
Il LIMIT
La clausola non influisce sul calcolo di avg()
funzione – viene restituita solo una riga con avg()
funzione comunque.
SELECT avg(Price)
FROM Products
LIMIT 1;
Risultato:
184.555
Detto questo, fornendo un limite pari a zero non verrà restituito nulla.
Stringhe e BLOB
I valori di stringa e BLOB che non sembrano numeri vengono interpretati come 0.
SELECT avg(ProductName) FROM Products;
Risultato:
0.0
Argomenti NULL
Se non sono presenti input non NULL, la funzione avg() restituisce NULL.
SELECT avg(NULL);
Risultato:
(Il risultato è NULL).
Tuttavia, se è presente almeno un argomento non NULL, non restituirà NULL.
Per dimostrarlo, qui inserirò una nuova riga, ma lascio il Prezzo colonna su NULL:
INSERT INTO Products (ProductId, ProductName)
VALUES (5, 'Red Widget');
SELECT * FROM Products;
Risultato:
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
Quindi l'ultima riga non ha un prezzo:il Prezzo la colonna è NULL.
Ora quando uso avg()
funzione, restituisce comunque la media di tutte le righe non NULL.
SELECT avg(Price) FROM Products;
Risultato:
184.555
La parola chiave DISTINCT
Puoi usare il DISTINCT
parola chiave per calcolare la media dei soli valori distinti nella colonna. Ciò ha l'effetto di rimuovere eventuali valori duplicati dal calcolo.
Per un esempio, vedere Modificare i risultati di Avg() in SQLite con la parola chiave DISTINCT.