Traiter les valeurs en double dans SQL peut être une tâche fastidieuse. Mais n'ayez crainte, ce guide est là pour alléger votre fardeau.
Les données se présentent sous toutes les formes et sous toutes les formes, mais les enregistrements en double constituent une partie importante de chaque format de données. Qu'il s'agisse de traiter des données Web ou simplement de naviguer dans un chargement de données de vente, votre analyse sera faussée si vous avez des valeurs en double.
Utilisez-vous SQL pour analyser vos chiffres et effectuer de longues requêtes sur vos piles de données? Si oui, alors ce guide sur la gestion des doublons SQL sera un délice absolu pour vous.
Voici quelques façons différentes de gérer les doublons à l'aide de SQL.
1. Compter les doublons à l'aide du groupe par fonction
SQL est un langage de programmation à multiples facettes qui offre diverses fonctions pour simplifier les calculs. Si vous avez beaucoup d'expérience avec les fonctions d'agrégation dans SQL, vous connaissez peut-être déjà les grouper par fonction et à quoi il peut servir.
Le par groupe fonction est l'une des commandes SQL les plus élémentaires, ce qui est idéal pour traiter plusieurs enregistrements puisque vous pouvez utiliser différentes fonctions d'agrégation telles que somme, compter, moyenne, et bien d'autres en collaboration avec le par groupe fonction pour arriver à une valeur ligne par ligne distincte.
Selon le scénario, vous pouvez trouver des doublons avec le par groupe fonction dans une seule colonne et plusieurs colonnes.
un. Compter les doublons dans une seule colonne
Supposons que vous ayez le tableau de données suivant avec deux colonnes: ID produit et Ordres.
ID produit |
Ordres |
2 |
7 |
2 |
8 |
2 |
10 |
9 |
6 |
10 |
1 |
10 |
5 |
12 |
5 |
12 |
12 |
12 |
7 |
14 |
1 |
14 |
1 |
47 |
4 |
47 |
4 |
Pour trouver des ID de produit en double, vous pouvez utiliser le par groupe fonction et la ayant clause pour filtrer les valeurs agrégées, comme suit :
sélectionner ID produit, compter(ID produit) comme Le compte total
de sahil.product_dups
grouper par productid
ayant count (productid) > 1
commander par productid ;
Comme pour une instruction SQL typique, vous devez commencer par définir les colonnes que vous souhaitez afficher dans le résultat final. Dans ce cas, nous voulons afficher le nombre de valeurs en double dans le ID produit colonne.
Dans le premier segment, définissez le ID produit colonne dans le sélectionner déclaration. Le compter la fonction suit la ID produit référence afin que SQL comprenne le but de votre requête.
Définissez ensuite la table source à l'aide de la depuis clause. Depuis compter est une fonction d'agrégation, vous devez utiliser la par groupe fonction pour regrouper toutes les valeurs similaires.
N'oubliez pas que l'idée est de répertorier les valeurs en double dans le ID produit colonne. Pour ce faire, vous devez filtrer les valeurs de comptage et d'affichage apparaissant plusieurs fois dans la colonne. Le ayant la clause filtre les données agrégées; vous pouvez utiliser la condition, c'est-à-dire, nombre (productid)> 1, pour afficher les résultats souhaités.
Finalement, le commandé par La clause trie les résultats finaux par ordre croissant.
La sortie est la suivante :
b. Compter les doublons dans plusieurs colonnes
Lorsque vous souhaitez compter les doublons dans plusieurs colonnes mais que vous ne souhaitez pas écrire plusieurs requêtes SQL, vous pouvez développer le code ci-dessus avec quelques ajustements. Par exemple, si vous souhaitez afficher des lignes en double dans plusieurs colonnes, vous pouvez utiliser le code suivant :
sélectionner ID produit, commandes, compter(*) comme Le compte total
de sahil.product_dups
grouper par productid, commandes
ayant count (productid) > 1
commander par productid ;
Dans la sortie, vous remarquerez que seules deux lignes sont affichées. Lorsque vous modifiez la requête et ajoutez la référence des deux colonnes dans le sélectionner instruction, vous obtenez un nombre de lignes correspondantes avec des valeurs en double.
À la place du compter (colonne) fonction, vous devez passer la compter(*) fonction pour obtenir des lignes en double. Le * La fonction parcourt toutes les lignes et recherche les lignes en double au lieu des valeurs individuelles en double.
La sortie est illustrée ci-dessous :
Les lignes correspondantes avec Product ID 14 et 47 sont affichées puisque les valeurs de commande sont les mêmes.
2. Marquage des doublons avec la fonction row_number()
Tandis que le par groupe et ayant combinaison est le moyen le plus simple de rechercher et de signaler les doublons dans une table, il existe une autre façon de rechercher des doublons à l'aide de la numéro_ligne() fonction. Le numéro_ligne() la fonction fait partie de la Fonctions de fenêtre SQL catégorie et est indispensable pour traiter efficacement vos requêtes.
Voici comment vous pouvez signaler les doublons à l'aide de la numéro_ligne() fonction:
sélectionner ID produit, commandes,
row_number() sur (partition par productid ordre par productid) comme sno
de sahil.product_dups ;
Le numéro_ligne() La fonction passe au peigne fin chaque valeur d'ID de produit et assimile le nombre de récurrences pour chaque ID. Le cloison Le mot-clé sépare les valeurs en double et attribue des valeurs chronologiquement, comme 1, 2, 3, etc.
Si vous n'utilisez pas le cloison mot-clé, vous aurez un numéro de série unique pour tous les identifiants de produit, ce qui ne conviendra pas à votre objectif.
Le commandé par La clause dans la section de partition est fonctionnelle lors de la définition de l'ordre de tri. Vous pouvez choisir entre l'ordre croissant (par défaut) et décroissant.
Enfin, vous pouvez attribuer un alias à la colonne pour faciliter le filtrage ultérieur (si nécessaire).
3. Suppression des lignes en double d'une table SQL
Étant donné que les valeurs en double dans un tableau peuvent fausser votre analyse, il est souvent impératif de les éliminer lors de la phase de nettoyage des données. SQL est un langage précieux qui offre des moyens de suivre et de supprimer efficacement vos valeurs en double.
un. Utilisation du mot-clé distinct
Le distinct Le mot clé est probablement la fonction SQL la plus courante et la plus fréquemment utilisée pour supprimer les valeurs en double dans une table. Vous pouvez supprimer les doublons d'une seule colonne ou même des lignes en double en une seule fois.
Voici comment vous pouvez supprimer les doublons d'une seule colonne :
sélectionnerdistinct ID produit depuis sahil.product_dups ;
La sortie renvoie une liste de tous les ID de produit uniques de la table.
Pour supprimer les lignes en double, vous pouvez modifier le code ci-dessus comme suit :
sélectionnerdistinct * depuis sahil.product_dups ;
La sortie renvoie une liste de toutes les lignes uniques de la table. En regardant la sortie, vous remarquerez que les Product ID 14 et 47 n'apparaissent qu'une seule fois dans le tableau des résultats finaux.
b. Utilisation de la méthode Common Table Expression (CTE)
La méthode Common Table Expression (CTE) diffère légèrement du code SQL traditionnel. Les CTE sont similaires à Les tables temporaires de SQL, à la seule différence qu'ils sont virtuels, auxquels vous ne pouvez faire référence que lors de l'exécution de la requête.
Le plus grand avantage est que vous n'avez pas besoin de passer une requête distincte pour supprimer ces tables ultérieurement, car elles cessent d'exister dès que la requête s'exécute. En utilisant la méthode CTE, vous pouvez utiliser le code ci-dessous pour rechercher et supprimer les doublons.
avec cteproduits comme
(sélectionner ID produit, commandes,
row_number() sur (partition par productid ordre par productid) comme sno
de sahil.product_dups)
sélectionner * depuis cteproduits
où sno = 1 ;
Vous pouvez invoquer la fonction CTE à l'aide de la avec mot-clé; définir le nom de la table virtuelle temporaire après le avec mot-clé. La référence de table CTE est utile lors du filtrage des valeurs de la table.
Dans la partie suivante, attribuez des numéros de ligne à vos ID de produit à l'aide de la numéro_ligne() fonction. Étant donné que vous faites référence à chaque ID de produit avec un cloison fonction, chaque identifiant récurrent a une valeur distincte.
Enfin, filtrez les nouveaux sno colonne dans le dernier segment avec une autre sélectionner déclaration. Définissez ce filtre sur 1 pour obtenir des valeurs uniques dans la sortie finale.
Apprenez à utiliser SQL en toute simplicité
SQL et ses variantes sont devenus le sujet de conversation de la ville, avec sa capacité innée à interroger et à utiliser des bases de données relationnelles. De l'écriture de requêtes simples à l'exécution d'analyses élaborées avec des sous-requêtes, ce langage a un peu de tout.
Cependant, avant d'écrire des requêtes, vous devez perfectionner vos compétences et vous familiariser avec les codes pour devenir un codeur adepte. Vous pouvez apprendre SQL de manière ludique en mettant en œuvre vos connaissances dans des jeux. Apprenez quelques nuances de codage sophistiquées en ajoutant un peu de plaisir à votre code.