Fondamentaux

DISTINCT ou GROUP BY : comment supprimer les répétitions ?

Les deux peuvent retourner une ligne par valeur, mais leur intention n’est pas la même.

Équipe SQL.tn7 min
Un flux de données sépare la déduplication simple du regroupement avec calcul

Unicité d’affichage ou calcul par groupe ?

SELECT DISTINCT categorie exprime directement une demande de liste unique. GROUP BY categorie devient naturel lorsqu’on ajoute COUNT, SUM ou AVG.

Aucun des deux ne corrige un doublon dans la table source. Ils façonnent seulement le résultat de lecture.

Les noms, montants et données utilisés dans cet article sont fictifs et créés pour l’apprentissage.

La requête expliquée

Commencez par définir ce que doit représenter une ligne du résultat. Cette décision détermine les colonnes, les regroupements et les contrôles nécessaires.

L’exemple suivant isole le mécanisme principal. Exécutez-le, observez le résultat, puis modifiez une seule clause à la fois pour comprendre son effet.

Compter les produits par catégorie
SELECT categorie, COUNT(*) AS produits
FROM produits
GROUP BY categorie
ORDER BY produits DESC, categorie;

Lire le résultat comme un analyste

Une ligne représente désormais une catégorie. Le compteur explique son poids, ce qu’un simple DISTINCT ne ferait pas.

Si plusieurs colonnes sont sélectionnées, DISTINCT porte sur leur combinaison complète ; définissez donc précisément l’unicité attendue.

  • Écrire ce qu’une ligne unique représente.
  • Inspecter les clés de la source.
  • Utiliser GROUP BY pour les agrégations.
  • Ajouter un tri stable.

Les erreurs qui faussent l’analyse

Une requête peut être valide sans répondre correctement à la question. Les erreurs les plus coûteuses sont souvent silencieuses : mauvais périmètre, ligne multipliée ou valeur absente interprétée comme zéro.

Avant de partager le résultat, confrontez-le à un petit échantillon calculé à la main et conservez la définition du périmètre avec la requête.

  • Utiliser DISTINCT pour cacher une mauvaise jointure.
  • Croire qu’il agit uniquement sur la première colonne.
  • Grouper par une colonne inutile et changer le grain.
  • Confondre déduplication du résultat et nettoyage de la source.

Passez à la pratique

Listez les catégories uniques, puis transformez la requête en comptage par catégorie pour comparer les deux intentions.

Le simulateur SQL de SQL.tn exécute uniquement des requêtes de lecture sur des données fictives dans votre navigateur. Vous pouvez essayer plusieurs écritures et comparer leur résultat sans installer de logiciel.

Mettez ce guide en pratique.

Ouvrez l’exercice associé, exécutez votre requête et comparez le résultat attendu.

Faire l’exercice