Voorbereiding op SQL-sollicitatiegesprekken · Les

INTERSECT en EXCEPT voor vergelijkingen

Gemeenschappelijke en afwijkende rijen tussen twee datasets vinden

Les 3 van 413 stappen

INTERSECT en EXCEPT voor vergelijkingen is een gratis Voorbereiding op SQL-sollicitatiegesprekken-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op SQL-sollicitatiegesprekken. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

De vergelijkingsoperatoren

INTERSECT en EXCEPT zijn setoperatoren om twee resultaatsets te vergelijken in plaats van ze samen te voegen. Interviewers gebruiken ze bij vragen als "welke klanten staan in beide lijsten" of "welke rijen staan wel in A maar niet in B".

  • INTERSECT = rijen die in beide queries voorkomen.
  • EXCEPT = rijen uit de eerste query die niet in de tweede voorkomen.

Wat INTERSECT oplevert

INTERSECT levert alleen de unieke rijen op die in beide resultaatsets voorkomen. Een rij moet in elke kolom overeenkomen om als gemeenschappelijk te gelden.

Net als UNION verwijdert een gewone INTERSECT duplicaten, zodat elke gemeenschappelijke rij één keer wordt teruggegeven.

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

Wat EXCEPT oplevert

EXCEPT (in Oracle MINUS genoemd) levert de unieke rijen uit de eerste query op die niet in de tweede voorkomen. De bewerking is richtinggevoelig: A EXCEPT B verschilt van B EXCEPT A.

Dit is de natuurlijke manier om records te vinden die in een tweede dataset ontbreken.

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

EXCEPT is niet symmetrisch

Een veelbesproken punt in sollicitatiegesprekken: EXCEPT is richtinggevoelig. Als je de twee queries omwisselt, beantwoord je een andere vraag.

  • A EXCEPT B = wel in A, niet in B.
  • B EXCEPT A = wel in B, niet in A.

INTERSECT is daarentegen symmetrisch: A INTERSECT B is gelijk aan B INTERSECT A.

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

Duplicaten en de standaardinstelling DISTINCT

De standaardvarianten van INTERSECT en EXCEPT werken met unieke rijen, net als UNION. Dubbele invoerrijen worden vóór de vergelijking samengevoegd.

Sommige databases ondersteunen INTERSECT ALL en EXCEPT ALL, die rekening houden met het aantal voorkomens, maar deze komen minder vaak voor. Als de interviewer ALL niet vermeldt, ga je uit van unieke rijen.

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

Volledige rijen op gelijkheid vergelijken

Beide operatoren vergelijken volledige rijen op basis van alle geselecteerde kolommen. Twee rijen zijn alleen gelijk wanneer elke kolom overeenkomt. Daardoor zijn deze operatoren ideaal om te bepalen of twee tabellen identieke gegevens bevatten.

Selecteer de volledige verzameling kolommen die je belangrijk vindt, zodat de vergelijking betekenisvol is.

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

Het patroon voor een tabelverschil in twee richtingen

Om te controleren of twee tabellen identiek zijn, voer je EXCEPT in beide richtingen uit en combineer je de verschillen. Als het gecombineerde resultaat leeg is, komen de tabellen exact overeen.

Dit is een klassiek antwoord in sollicitatiegesprekken over gegevensvalidatie bij migratie- en afstemmingscontroles.

(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

Hoe NULL-waarden worden behandeld

Binnen setbewerkingen worden twee NULL-waarden voor vergelijkingsdoeleinden als gelijk aan elkaar behandeld. Dat verschilt van het gebruikelijke resultaat UNKNOWN van NULL = NULL.

Een rij met NULL in een kolom komt dus overeen met een andere rij met NULL op dezelfde positie. Interviewers toetsen dit omdat het in strijd lijkt met de gewone vergelijkingsregels.

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

Voorrang van operatoren bij setbewerkingen

Wanneer je operatoren combineert, heeft INTERSECT volgens de SQL-standaard doorgaans een hogere prioriteit dan UNION en EXCEPT. Zet takken tussen haakjes om onduidelijkheid te voorkomen.

Als je in een sollicitatiegesprek zegt dat je haakjes gebruikt om de evaluatievolgorde expliciet te maken, laat je zien dat je de materie beheerst.

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

INTERSECT/EXCEPT of joins kiezen

INTERSECT en EXCEPT zijn beknopt en vergelijken volledige rijen met ingebouwde ontdubbeling. Joins zijn flexibeler: je kunt extra kolommen teruggeven en zelf bepalen hoe je duplicaten behandelt.

Kies de setoperatoren wanneer de vraag puur is "welke rijen komen overeen of ontbreken". Schakel over op joins wanneer je kolommen van beide kanten nodig hebt of wanneer het SQL-dialect deze operatoren niet ondersteunt.

Alles met elkaar verbinden

Een samenvatting die je kunt opzeggen: "INTERSECT levert rijen uit beide queries op en is symmetrisch; EXCEPT levert rijen uit de eerste query op die niet in de tweede staan en is richtinggevoelig. Beide vergelijken volledige rijen, behandelen NULL-waarden als gelijk en leveren standaard unieke resultaten op."

Voeg de truc met het tabelverschil via EXCEPT in twee richtingen toe als vervolgvraag over gegevensafstemming, dan behandel je het onderwerp volledig.

Snelle controle

Je wilt de klanten vinden die in 2023 een bestelling hebben geplaatst, maar in 2024 geen bestelling hebben geplaatst (klanten die zijn afgehaakt).

Samenvatting

Belangrijkste punten:

  • INTERSECT = rijen in beide queries; symmetrisch.
  • EXCEPT (Oracle: MINUS) = rijen in de eerste query die niet in de tweede staan; richtinggevoelig.
  • Beide vergelijken volledige rijen en leveren standaard unieke resultaten op.
  • NULL-waarden worden voor vergelijkingen als gelijk behandeld.
  • Een EXCEPT in twee richtingen levert een volledig tabelverschil op.
Gratis beginnen

Leer SQL met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “INTERSECT en EXCEPT voor vergelijkingen” gratis?

Ja — de volledige tekst van “INTERSECT en EXCEPT voor vergelijkingen” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op SQL-sollicitatiegesprekken wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op SQL-sollicitatiegesprekken bevat in totaal 4 lessen.

Wat leer ik in “INTERSECT en EXCEPT voor vergelijkingen”?

Gemeenschappelijke en afwijkende rijen tussen twee datasets vinden Je oefent met Voorbereiding op SQL-sollicitatiegesprekken door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Voorbereiding op SQL-sollicitatiegesprekken te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op SQL-sollicitatiegesprekken op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “INTERSECT en EXCEPT voor vergelijkingen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op SQL-sollicitatiegesprekken?

Ja. Elke les over Voorbereiding op SQL-sollicitatiegesprekken bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. UNION versus UNION ALL
  2. Compatibiliteit van aantal en typen kolommen
  3. INTERSECT en EXCEPT voor vergelijkingen
  4. Setbewerkingen nabootsen met joins
← Terug naar Voorbereiding op SQL-sollicitatiegesprekken