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

Come funziona SQLite Avg()

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.