Maison  >  Article  >  base de données  >  Comment supprimer les enregistrements en double dans Oracle

Comment supprimer les enregistrements en double dans Oracle

PHPz
PHPzoriginal
2023-04-17 09:19:462831parcourir

Oracle est l'un des plus grands systèmes de gestion de bases de données relationnelles au monde. Ses fonctions puissantes et sa large gamme d'applications en font un élément indispensable des applications au niveau de l'entreprise. Dans ces applications, la déduplication des données est une tâche courante. La suppression des enregistrements en double peut améliorer la qualité des données et réduire l'espace de stockage et le temps de requête.

Dans Oracle, vous pouvez utiliser plusieurs méthodes pour supprimer les enregistrements en double :

  1. Mot-clé DISTINCT

L'utilisation du mot-clé DISTINCT renvoie un ensemble de résultats unique, ce qui signifie qu'il n'y aura aucun enregistrement en double. Par exemple, la requête suivante renverra tous les noms de clients distincts :

SELECT DISTINCT CUSTOMER_NAME FROM CUSTOMERS ;

  1. Clause GROUP BY

La clause GROUP BY est utilisée pour le regroupement et renvoie une seule ligne pour chaque groupe. En combinant certaines colonnes, vous pouvez trouver des valeurs uniques. Par exemple, la requête suivante renverra le nombre de clients dans chaque ville :

SELECT CITY, COUNT(*) FROM CUSTOMERS GROUP BY CITY

  1. Fonction d'élimination des lignes en double

Oracle inclut plusieurs fonctions intégrées pour éliminer enregistrements en double, par exemple :

  • MIN() : renvoie la valeur minimale dans le groupe.
  • MAX() : renvoie la valeur maximale dans le groupe.
  • AVG() : renvoie la valeur moyenne dans le groupe.
  • SUM() : Renvoie la somme des valeurs du groupe.

La requête suivante renverra le nombre d'adresses uniques dans la table des clients :

SELECT COUNT(DISTINCT ADDRESS) FROM CUSTOMERS ;

  1. Utilisation d'une fonction de fenêtre

Une fonction de fenêtre est une fonction spéciale qui compte l'intégralité valeur du jeu de résultats plutôt qu’une ligne distincte. Utilisez les fonctions de fenêtre pour éliminer les enregistrements en double tout en conservant les données d'origine.

La requête suivante renverra les 20 derniers enregistrements de ventes triés par heure de vente sans conserver les enregistrements de ventes en double :

SELECT * FROM (
SELECT

ROW_NUMBER() OVER(PARTITION BY SALE_DATE ORDER BY SALE_AMOUNT DESC) RN,
SALE_ID, 
SALE_AMOUNT, 
SALE_DATE

FROM

SALES

) WHERE RN <= 20;

Résumé

Oracle dispose de nombreuses méthodes pour supprimer les enregistrements en double, notamment le mot-clé DISTINCT, la clause GROUP BY, la fonction d'élimination des lignes en double et la fonction de fenêtre. L'utilisation de ces méthodes peut améliorer la qualité des données et réduire l'espace de stockage et le temps de requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn