0Pricing
Coding Interview Prep · Leçon

INTERSECT et EXCEPT pour comparer

Trouver les lignes communes et différentes entre deux jeux de données

INTERSECT et EXCEPT pour comparer est une leçon Coding Interview Prep gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Coding Interview Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Coding Interview Prep comprend 4 leçons au total.

Les opérateurs de comparaison

INTERSECT et EXCEPT sont les opérateurs ensemblistes qui servent à comparer deux ensembles de résultats plutôt qu'à les fusionner. Les recruteurs les utilisent pour des questions comme « quels clients figurent dans les deux listes » ou « quelles lignes sont présentes dans A, mais pas dans B ».

  • INTERSECT = lignes présentes dans les deux requêtes.
  • EXCEPT = lignes présentes dans la première requête, mais pas dans la deuxième.

Ce que renvoie INTERSECT

INTERSECT renvoie uniquement les lignes distinctes qui apparaissent dans les deux ensembles de résultats. Une ligne doit correspondre sur chaque colonne pour être considérée comme commune.

Comme UNION, INTERSECT simple supprime les doublons et renvoie chaque ligne commune une seule fois.

SELECT customer_id FROM orders_2023
INTERSECT
SELECT customer_id FROM orders_2024;
-- customers who ordered in BOTH years

Ce que renvoie EXCEPT

EXCEPT (appelé MINUS dans Oracle) renvoie les lignes distinctes de la première requête qui n'apparaissent pas dans la deuxième. Il est directionnel : A EXCEPT B est différent de B EXCEPT A.

C'est la méthode naturelle pour trouver les enregistrements absents d'un deuxième ensemble de données.

SELECT customer_id FROM orders_2023
EXCEPT
SELECT customer_id FROM orders_2024;
-- ordered in 2023 but NOT in 2024 (churned)

EXCEPT n'est pas symétrique

Un point souvent posé en entretien : EXCEPT est directionnel. Inverser les deux requêtes revient à poser une autre question.

  • A EXCEPT B = présent dans A, absent de B.
  • B EXCEPT A = présent dans B, absent de A.

INTERSECT, en revanche, est symétrique : A INTERSECT B est égal à B INTERSECT A.

-- new customers in 2024 (not seen in 2023):
SELECT customer_id FROM orders_2024
EXCEPT
SELECT customer_id FROM orders_2023;

Doublons et valeur par défaut DISTINCT

INTERSECT et EXCEPT standard opèrent sur des lignes distinctes, comme UNION. Les lignes d'entrée en double sont regroupées avant la comparaison.

Certaines bases de données prennent en charge INTERSECT ALL et EXCEPT ALL, qui tiennent compte de la multiplicité, mais ces variantes sont moins courantes. Si le recruteur ne précise pas ALL, supposez un comportement distinct.

SELECT city FROM a
INTERSECT ALL
SELECT city FROM b;
-- multiplicity-aware (Postgres supports this; MySQL 8+ too)

Comparer des lignes entières pour vérifier l'égalité

Les deux opérateurs comparent des lignes entières sur l'ensemble des colonnes sélectionnées. Deux lignes sont égales uniquement lorsque chaque colonne correspond. Ils sont donc parfaits pour vérifier si deux tables contiennent des données identiques.

Sélectionnez l'ensemble complet des colonnes qui vous intéressent afin que la comparaison soit pertinente.

SELECT id, name, email FROM prod_users
EXCEPT
SELECT id, name, email FROM staging_users;
-- rows in prod that differ from / are missing in staging

Méthode de comparaison bidirectionnelle des tables

Pour vérifier si deux tables sont identiques, exécutez EXCEPT dans les deux directions et combinez les différences. Si le résultat combiné est vide, les tables correspondent exactement.

C'est une réponse classique d'entretien sur la validation des données pour les contrôles de migration et de rapprochement.

(SELECT * FROM table_a EXCEPT SELECT * FROM table_b)
UNION ALL
(SELECT * FROM table_b EXCEPT SELECT * FROM table_a);
-- empty result => tables are identical

Traitement des valeurs NULL

Dans les opérations ensemblistes, deux valeurs NULL sont considérées comme égales l'une à l'autre pour l'association, ce qui diffère du comportement habituel où NULL = NULL vaut UNKNOWN.

Ainsi, une ligne contenant NULL dans une colonne correspondra à une autre ligne contenant NULL à la même position. Les recruteurs vérifient ce point parce qu'il contredit les règles ordinaires de comparaison.

-- (1, NULL) INTERSECT (1, NULL) -> returns (1, NULL)
SELECT id, region FROM a
INTERSECT
SELECT id, region FROM b;

Priorité des opérateurs ensemblistes

Lorsque vous mélangez plusieurs opérateurs, INTERSECT a généralement une priorité plus élevée que UNION et EXCEPT dans la norme SQL. Pour éviter toute ambiguïté, entourez les branches de parenthèses.

Préciser que vous utilisez des parenthèses pour rendre l'ordre d'évaluation explicite montre votre maturité en entretien.

(SELECT id FROM a EXCEPT SELECT id FROM b)
UNION
(SELECT id FROM c);

Choisir INTERSECT/EXCEPT plutôt que des jointures

INTERSECT et EXCEPT sont concis et comparent des lignes entières avec une déduplication intégrée. Les jointures sont plus flexibles : vous pouvez renvoyer des colonnes supplémentaires et choisir la manière de gérer les doublons.

Préférez les opérateurs ensemblistes lorsque la question porte uniquement sur les lignes communes ou absentes. Utilisez plutôt des jointures lorsque vous avez besoin de colonnes provenant des deux côtés ou lorsque le dialecte ne prend pas en charge ces opérateurs.

Assembler le tout

Résumé que vous pouvez réciter : "INTERSECT renvoie les lignes présentes dans les deux requêtes et est symétrique ; EXCEPT renvoie les lignes présentes dans la première, mais pas dans la deuxième, et est directionnel. Les deux comparent des lignes entières, traitent les valeurs NULL comme égales et renvoient par défaut des résultats distincts."

Ajoutez l'astuce de comparaison bidirectionnelle avec EXCEPT pour répondre à la question complémentaire sur le rapprochement des données, et vous couvrez entièrement le sujet.

Vérification rapide

Vous voulez les clients qui ont passé une commande en 2023, mais qui n'en ont pas passé en 2024 (clients perdus).

Récapitulatif

Points essentiels :

  • INTERSECT = lignes présentes dans les deux requêtes ; symétrique.
  • EXCEPT (Oracle : MINUS) = lignes présentes dans la première requête, mais pas dans la deuxième ; directionnel.
  • Les deux comparent des lignes entières et renvoient par défaut une sortie distincte.
  • Les valeurs NULL sont considérées comme égales pour l'association.
  • Un EXCEPT dans les deux directions fournit une comparaison complète des tables.

Questions Fréquemment Posées

La leçon « INTERSECT et EXCEPT pour comparer » est-elle gratuite ?

Oui — le texte complet de « INTERSECT et EXCEPT pour comparer » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Coding Interview Prep, passe à CoddyKit PRO. Le cours Coding Interview Prep comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « INTERSECT et EXCEPT pour comparer » ?

Trouver les lignes communes et différentes entre deux jeux de données Tu pratiques Coding Interview Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Coding Interview Prep ?

Aucune expérience préalable n'est requise. Coding Interview Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « INTERSECT et EXCEPT pour comparer » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Coding Interview Prep ?

Oui. Chaque leçon Coding Interview Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. UNION ou UNION ALL
  2. Nombre de colonnes et compatibilité des types
  3. INTERSECT et EXCEPT pour comparer
  4. Émuler les opérations ensemblistes avec des jointures
← Retour à Coding Interview Prep