Voorbereiding op programmeerinterviews · Les

CASE-expressies in SELECT

Inline voorwaardelijke logica schrijven en de vormen searched CASE en simple CASE onderscheiden

Les 4 van 413 stappen

CASE-expressies in SELECT is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 4 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 programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.

CASE: de conditionele expressie van SQL

CASE is de if/then/else van SQL, maar het is een expressie die één waarde oplevert. Daardoor werkt het overal waar een waarde is toegestaan: in SELECT, WHERE, ORDER BY en zelfs binnen aggregaties.

SELECT order_id,
       amount,
       CASE WHEN amount > 100 THEN 'large' ELSE 'small' END AS size
FROM orders;

Vorm met searched CASE

De searched CASE controleert per WHEN een booleaanse voorwaarde en retourneert de eerste overeenkomst. Dit is de flexibelste vorm, en de volgorde is belangrijk: de eerste ware voorwaarde wint.

SELECT score,
       CASE
         WHEN score >= 90 THEN 'A'
         WHEN score >= 80 THEN 'B'
         WHEN score >= 70 THEN 'C'
         ELSE 'F'
       END AS grade
FROM exam_results;

Vorm met simple CASE

De simple CASE vergelijkt één expressie met een lijst waarden. Dat is korter voor gelijkheidscontroles, maar je kunt er geen bereiken of NULL-controles mee uitvoeren.

SELECT status_code,
       CASE status_code
         WHEN 1 THEN 'active'
         WHEN 2 THEN 'paused'
         WHEN 3 THEN 'closed'
         ELSE 'unknown'
       END AS status_label
FROM accounts;

Searched versus simple: wanneer gebruik je welke

Gebruik simple CASE voor gelijkheid met vaste waarden en searched CASE voor bereiken of NULL. Belangrijke valkuil: simple CASE kan nooit overeenkomen met NULL — gebruik IS NULL in een searched-vorm.

-- Simple CASE will NOT catch NULL here
SELECT CASE WHEN bonus IS NULL THEN 'no bonus'
            ELSE 'has bonus'
       END AS bonus_flag
FROM employees;

De volgorde van WHEN-takken is belangrijk

Omdat de eerste overeenkomende tak wint, zet je de WHEN-voorwaarden in volgorde van specifiek naar algemeen. Zet je een losse drempel eerst, dan krijgt een score van 95 het verkeerde label.

-- Correct order: highest threshold first
SELECT CASE
         WHEN score >= 90 THEN 'A'
         WHEN score >= 80 THEN 'B'
         ELSE 'C or below'
       END AS grade
FROM exam_results;

ELSE en de impliciete NULL

Als niets overeenkomt en je ELSE weglaat, retourneert CASE NULL. Voeg een expliciete ELSE toe voor je standaardwaarde, zodat onverwachte waarden niet ongemerkt NULL worden.

-- No ELSE: anything not 1/2 becomes NULL
SELECT CASE flag WHEN 1 THEN 'yes' WHEN 2 THEN 'no' END AS label
FROM toggles;

Conditionele aggregatie (draaipatroon)

De waardevolste truc voor sollicitatiegesprekken: conditionele aggregatie. Plaats CASE binnen SUM of COUNT om rijen per categorie in één doorgang te tellen — een overzichtelijk rapport in draaitabelstijl.

SELECT
  SUM(CASE WHEN status = 'paid'    THEN 1 ELSE 0 END) AS paid_orders,
  SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_orders,
  SUM(CASE WHEN status = 'paid'    THEN amount ELSE 0 END) AS paid_revenue
FROM orders;

COUNT negeert NULL: een snelkoppeling met CASE

Omdat COUNT NULL-waarden negeert, kun je ELSE weglaten. Niet-overeenkomende rijen worden dan NULL en worden niet meegeteld. Dit is een iets kortere manier om conditioneel te tellen.

SELECT
  COUNT(CASE WHEN status = 'paid' THEN 1 END)    AS paid_orders,
  COUNT(CASE WHEN status = 'pending' THEN 1 END) AS pending_orders
FROM orders;

CASE in ORDER BY voor aangepaste sortering

Plaats CASE in ORDER BY om op een aangepaste prioriteit te sorteren in plaats van op alfabetische of numerieke volgorde — bijvoorbeeld urgent vóór normaal en daarna al het overige.

SELECT order_id, status
FROM orders
ORDER BY
  CASE status
    WHEN 'urgent' THEN 1
    WHEN 'normal' THEN 2
    ELSE 3
  END,
  order_id;

Consistente typen in alle takken

Alle takken van een CASE moeten een compatibel type retourneren. Een getal en een tekenreeks combineren kan een fout geven of een cast afdwingen. Kies één uitvoertype en cast expliciet als dat nodig is.

-- Keep branches the same type
SELECT CASE WHEN qty > 0 THEN CAST(qty AS VARCHAR)
            ELSE 'none'
       END AS qty_label
FROM inventory;

CASE in WHERE voor conditioneel filteren

CASE in WHERE laat je verschillende filterlogica toepassen op basis van een vlag — bijvoorbeeld een andere prijsdrempel per regio. Dat is vaak overzichtelijker dan een kluwen van AND's en OR's.

SELECT order_id, amount, region
FROM orders
WHERE amount > CASE region
                 WHEN 'US'  THEN 100
                 WHEN 'EU'  THEN 90
                 ELSE 50
               END;

Korte controle

Voorspel het resultaat.

Samenvatting

Samenvatting: CASE retourneert één waarde en werkt in SELECT, WHERE, ORDER BY en aggregaties. Searched CASE verwerkt bereiken en NULL; de eerste overeenkomst wint; geen overeenkomst betekent NULL; houd de typen van de takken compatibel.

Gratis beginnen

Leer Voorbereiding op programmeerinterviews 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
90
Lessen
360

Veelgestelde vragen

Is de les “CASE-expressies in SELECT” gratis?

Ja — de volledige tekst van “CASE-expressies in SELECT” 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 programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.

Wat leer ik in “CASE-expressies in SELECT”?

Inline voorwaardelijke logica schrijven en de vormen searched CASE en simple CASE onderscheiden Je oefent met Voorbereiding op programmeerinterviews 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 programmeerinterviews te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews 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 4 van 4.

Hoe lang duurt de les “CASE-expressies in SELECT”?

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 programmeerinterviews?

Ja. Elke les over Voorbereiding op programmeerinterviews 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. Kolommen projecteren en valkuilen met aliassen
  2. Berekende kolommen en prioriteit van expressies
  3. DISTINCT versus GROUP BY voor uniciteit
  4. CASE-expressies in SELECT
← Terug naar Voorbereiding op programmeerinterviews