Accéder au contenu principal

Comment utiliser SQL MINUS

L'opérateur SQL MINUS soustrait un ensemble de résultats d'un autre. Il est simple à utiliser : Il suffit de placer MINUS entre deux requêtes pour exclure les enregistrements communs de la première série.
Actualisé 16 janv. 2025  · 10 min de lecture

En SQL, l'opérateur MINUS est un outil puissant pour soustraire un ensemble de résultats d'un autre. Cet opérateur est essentiel pour les scénarios dans lesquels nous devons identifier les lignes uniques dans un ensemble de données mais pas dans un autre.

Dans cet article, nous allons explorer l'objectif, la syntaxe et les applications pratiques de l'opérateur SQL MINUS, afin de garantir une compréhension approfondie des requêtes SQL et de la manipulation des données.

La réponse rapide : Comment utiliser SQL MINUS

L'opérateur SQL MINUS soustrait un ensemble de résultats d'un autre, en ne renvoyant que les lignes uniques du premier ensemble qui ne sont pas présentes dans le second.

Imaginons que nous ayons deux tableaux de salariés, l'un de 2023 et l'autre de 2024. Nous voulons savoir quels employés étaient présents sur Employees2023 mais ne le sont plus sur Employees2024. Nous pourrions utiliser une instruction SQL MINUS pour obtenir la réponse. 

SELECT EmployeeID, Name, Department
FROM Employees2023
MINUS
SELECT EmployeeID, Name, Department
FROM Employees2024;
Employees2023:

| EmployeeID | Name    | Department |

|------------|---------|------------|

| 1          | Alice   | HR         |

| 2          | Bob     | IT         |

| 3          | Charlie | Sales      |

| 4          | David   | IT         |


Employees2024:

| EmployeeID | Name    | Department |

|------------|---------|------------|

| 2          | Bob     | IT         |

| 3          | Charlie | Sales      |

| 4          | David   | IT         |

| 5          | Eve     | Marketing  |


Expected Output:

| EmployeeID | Name  | Department |

|------------|-------|------------|

| 1          | Alice | HR         |

Qu'est-ce que l'opérateur SQL MINUS ?

L'opérateur SQL MINUS compare deux instructions SELECT et renvoie les lignes de la première instruction SELECT qui sont absentes de la seconde. Plus précisément, il effectue une opération de différence d'ensemble, qui est cruciale pour diverses tâches d'analyse de données. Ceci est particulièrement utile pour les efforts de nettoyage, de validation et de consolidation des données, lorsque nous devons mettre en évidence les divergences entre les ensembles de données.

Syntaxe de l'opérateur SQL MINUS

La syntaxe de base de l'opérateur MINUS est la suivante :

SELECT column1, column2, ...
FROM table1
MINUS
SELECT column1, column2, ...
FROM table2;

Les éléments de la requête sont les suivants :

  • Déclaration SELECT: L'instruction SELECT spécifie les tableaux souhaités et le tableau à partir duquel ils doivent être extraits.
  • Opérateur MINUS: L'opérateur MINUS soustrait le deuxième ensemble de résultats du premier.
  • Des composants facultatifs tels que la clause WHERE peuvent être inclus pour filtrer les données.
SELECT column1, column2, ...
FROM table1
WHERE condition
MINUS
SELECT column1, column2, ...
FROM table2
WHERE condition;

Points importants à retenir

Pour utiliser correctement l'opérateur MINUS, gardez à l'esprit les points suivants :

  • Les deux déclarations SELECT doivent avoir le même nombre de colonnes.
  • Les types de données des colonnes correspondantes doivent être identiques.
  • Bien que les noms de colonnes ne doivent pas être identiques, leurs types de données doivent être alignés. ne doivent pas nécessairement être identiques, leurs types de données doivent être alignés.
  • MINUS supprime les lignes en double de l'ensemble de résultats final, ne renvoyant que des lignes distinctes.

Exemples pratiques

Voyons maintenant quelques exemples pratiques pour consolider notre compréhension.

Exemple avec une seule expression

Nous utilisons la requête suivante pour trouver les départements uniques en 2019 qui ne sont pas présents en 2020 :

SELECT Department
FROM Employees2019
MINUS
SELECT Department
FROM Employees2020;

Exemple avec la clause ORDER BY

Nous utilisons la requête suivante pour obtenir les employés uniques en 2019, triés par leur nom :

SELECT EmployeeName
FROM Employees2019
MINUS
SELECT EmployeeName
FROM Employees2020
ORDER BY EmployeeName;

Cas d'utilisation courants de l'opérateur MINUS

L'opérateur SQL MINUS est un outil polyvalent qui peut être utilisé dans différents scénarios pour améliorer l'analyse et la gestion des données. Vous trouverez ci-dessous plusieurs cas d'utilisation quotidienne où l'opérateur MINUS s'avère particulièrement utile.

Validation des données dans les processus ETL

Assurer la cohérence et l'exactitude des données dans les processus ETL (Extract, Transform, Load). L'opérateur MINUS peut valider les données en comparant les ensembles de données source et cible.

Prenons un exemple. Pour vérifier que tous les tableaux de la table de préparation ont été chargés dans le tableau final, nous pouvons utiliser la requête suivante :

SELECT *
FROM StagingTable
MINUS
SELECT *
FROM FinalTable;

Identifier les données manquantes entre deux ensembles de données

Lorsque vous consolidez des données provenant de sources multiples, il est essentiel d'identifier les enregistrements manquants pour garantir l'exhaustivité :

SELECT CustomerID
FROM SourceA
MINUS
SELECT CustomerID
FROM SourceB;

Limites et alternatives

Bien que l'opérateur SQL MINUS soit un outil puissant pour comparer des ensembles de données, il présente certaines limites et n'est pas toujours le meilleur choix pour chaque scénario. Comprendre ces limitations et connaître les alternatives disponibles peut nous aider à prendre de meilleures décisions lorsque nous travaillons avec des requêtes SQL.

  1. Non pris en charge par toutes les bases de données : L'opérateur MINUS n'est pas universellement supporté par tous les systèmes de gestion de bases de données SQL. S'il est disponible dans Oracle, il n'est pas pris en charge par SQL Server, qui utilise l'opérateur EXCEPT.
  2. Exigences relatives aux colonnes et aux types de données : Les deux instructions SELECT utilisées avec l'opérateur MINUS doivent avoir le même nombre de colonnes, et les colonnes correspondantes doivent avoir des types de données compatibles. Cela peut s'avérer restrictif lorsque vous travaillez avec des requêtes complexes impliquant différents ensembles de données.
  3. Sensibilité à la casse : L'opérateur MINUS est sensible à la casse. Par exemple, "Apple" et "pomme" sont considérés comme des valeurs différentes. Si la sensibilité à la casse n'est pas prise en compte, cela peut conduire à des résultats inattendus.
  4. Pas de tri : L'ensemble des résultats renvoyés par l'opérateur MINUS n'est pas trié. Si une commande spécifique est requise, une clause supplémentaire ORDER BY doit être utilisée.
  5. Problèmes de performance : L'opérateur MINUS peut être lent lorsqu'il s'agit de grands ensembles de données, car il doit effectuer une comparaison complète entre les deux ensembles de résultats. Cela peut entraîner des goulets d'étranglement dans les applications à grande échelle.

Une alternative à l'opérateur MINUS est l'opérateur EXCEPT, dont la fonction est similaire et qui est largement supporté par les différentes bases de données SQL.

  • MINUS : Standard dans Oracle et quelques autres bases de données.
  • SAUF : Standard dans SQL Server, PostgreSQL et d'autres bases de données.

Conclusion

La compréhension de l'opérateur SQL MINUS est cruciale pour l'efficacité des requêtes SQL et de la manipulation des données. Cet opérateur nous aide à identifier les lignes uniques entre deux ensembles de données, ce qui le rend précieux pour les tâches de validation, de nettoyage et de consolidation des données. Entraînez-vous avec différents ensembles de données pour maîtriser l'utilisation de l'opérateur MINUS et améliorer vos compétences en SQL.

Si vous voulez vraiment améliorer vos compétences en SQL, suivez un cours DataCamp comme Introduction à SQL. Ce cours constitue une bonne base pour aborder des sujets plus avancés. Si vous avez l'impression de bien maîtriser les bases, essayez notre cours SQL intermédiaire, qui approfondit les complexités de SQL, y compris les opérations d'ensemble comme MINUS.


Oluseye Jeremiah's photo
Author
Oluseye Jeremiah
LinkedIn

Rédacteur technique spécialisé dans l'IA, la ML et la science des données, rendant les idées complexes claires et accessibles.

Questions fréquemment posées

À quoi sert l'opérateur SQL MINUS ?

L'opérateur SQL MINUS est utilisé pour soustraire un ensemble de résultats d'un autre, en ne renvoyant que les lignes uniques du premier ensemble qui ne sont pas présentes dans le second.

Quelles sont les exigences syntaxiques pour l'utilisation de l'opérateur SQL MINUS ?

Les deux instructions SELECT de l'opération MINUS doivent avoir le même nombre de colonnes et les types de données des colonnes correspondantes doivent être identiques.

L'opérateur SQL MINUS peut-il être utilisé dans toutes les bases de données SQL ?

Non, l'opérateur MINUS n'est pas pris en charge par toutes les bases de données SQL. Par exemple, il n'est pas pris en charge par MySQL mais est disponible dans Oracle.

Quels sont les cas d'utilisation courants de l'opérateur SQL MINUS ?

Les cas d'utilisation les plus courants sont la validation des données dans les processus ETL, l'identification des données manquantes entre deux ensembles de données, et le nettoyage et la consolidation des données provenant de sources multiples.

Quelle est la différence entre les opérateurs SQL MINUS et EXCEPT ?

L'opérateur MINUS est principalement utilisé dans Oracle et quelques autres bases de données, tandis que l'opérateur EXCEPT a une fonction similaire et est utilisé dans SQL Server, PostgreSQL et d'autres bases de données. Les deux opérateurs renvoient des lignes uniques de la première instruction SELECT qui ne sont pas présentes dans la seconde.

En quoi l'opérateur SQL MINUS est-il différent d'une anti jointure ?

L'opérateur MINUS en SQL est utilisé pour retourner toutes les lignes de la première requête qui ne sont pas présentes dans la seconde. Il s'agit d'une opération ensembliste qui compare les résultats de deux requêtes et renvoie la différence. Une antijonction, en revanche, est un type de jointure qui renvoie des lignes du premier tableau lorsqu'il n'existe pas de lignes correspondantes dans le second tableau. Pour ce faire, vous pouvez utiliser une clause LEFT JOIN combinée à une clause WHERE afin de filtrer les lignes pour lesquelles la condition de jointure n'est pas remplie.

Sujets

Apprenez SQL avec DataCamp

Certification disponible

cours

Introduction à SQL

2 hr
784.9K
Apprenez à créer et à interroger des bases de données relationnelles à l'aide de SQL en seulement deux heures.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

Voir plusVoir plus