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é.