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

Modifica i tuoi risultati Avg() in SQLite con la parola chiave DISTINCT

Se conosci il avg() funzione in SQLite, probabilmente saprai che restituisce la media di tutti i non NULL X all'interno di un gruppo.

Ma lo sapevi che puoi aggiungere il DISTINCT parola chiave per questa funzione?

Se aggiungi il DISTINCT parola chiave, avg() calcolerà i suoi risultati solo sulla base di valori distinti. Questo è essenzialmente lo stesso che rimuovere i valori duplicati e quindi calcolare la media sui valori rimanenti.

Sintassi

Per utilizzare il DISTINCT parola chiave, è sufficiente inserirla come primo argomento.

In questo modo:

avg(DISTINCT X)

Dove X è il nome della colonna per cui stai calcolando la media.

Esempio

Prendi la seguente tabella chiamata Products :

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Blue Widget    10.0      
3           Red Widget     10.0      
4           Green Widget   10.0      
5           Widget Stick   89.75     
6           Foo Cap        11.99     

Se eseguo un normale avg() nella colonna Prezzo:

SELECT avg(Price) FROM Products;

Ecco cosa ottengo:

45.2066666666667

Ma se eseguo un DISTINCT domanda:

SELECT avg(DISTINCT Price) FROM Products;

Ho questo:

62.81

Quindi in questo caso cambia notevolmente il risultato.

Tanto per essere chiari, eccoli fianco a fianco:

SELECT 
 avg(Price) AS "Non-Distinct",
 avg(DISTINCT Price) AS "Distinct"
FROM Products;

Risultato:

Non-Distinct      Distinct  
----------------  ----------
45.2066666666667  62.81     

Come probabilmente puoi immaginare, utilizzando il DISTINCT parola chiave con avg() potrebbe alterare enormemente i risultati, soprattutto se ci sono molti duplicati a un'estremità dell'intervallo, ma non molti duplicati all'altra estremità.