SQLite
 sql >> Base de données >  >> RDS >> SQLite

Ajustez vos résultats Avg() dans SQLite avec le mot-clé DISTINCT

Si vous connaissez le avg() dans SQLite, vous savez probablement qu'elle renvoie la moyenne de tous les X non NULL au sein d'un groupe.

Mais saviez-vous que vous pouvez ajouter le DISTINCT mot-clé à cette fonction ?

Si vous ajoutez le DISTINCT mot-clé, avg() calculera ses résultats sur la base de valeurs distinctes uniquement. Cela revient essentiellement à supprimer les valeurs en double, puis à calculer la moyenne sur les valeurs restantes.

Syntaxe

Pour utiliser le DISTINCT mot-clé, vous l'insérez simplement comme premier argument.

Comme ceci :

avg(DISTINCT X)

X est le nom de la colonne pour laquelle vous calculez la moyenne.

Exemple

Prenez le tableau suivant appelé 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     

Si j'exécute un avg() normal dans la colonne Prix :

SELECT avg(Price) FROM Products;

Voici ce que j'obtiens :

45.2066666666667

Mais si je lance un DISTINCT requête :

SELECT avg(DISTINCT Price) FROM Products;

J'obtiens ceci :

62.81

Donc, dans ce cas, cela change considérablement le résultat.

Juste pour être clair, les voici côte à côte :

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

Résultat :

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

Comme vous pouvez probablement l'imaginer, en utilisant le DISTINCT mot-clé avec avg() pourrait fausser énormément les résultats, surtout s'il y a beaucoup de doublons à une extrémité de la plage, mais pas beaucoup de doublons à l'autre extrémité.