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)
Où 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é.