0Pricing
Coding Interview Prep · Lektion

CASE-Ausdrücke in SELECT

Inline-Bedingungslogik sowie die gesuchten und einfachen CASE-Formen schreiben

CASE-Ausdrücke in SELECT ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

CASE: Bedingter Ausdruck in SQL

CASE ist das if/then/else von SQL, aber ein Ausdruck, der einen einzelnen Wert zurückgibt – daher funktioniert er überall dort, wo ein Wert erlaubt ist: in SELECT, WHERE, ORDER BY und sogar innerhalb von Aggregationen.

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

CASE mit Suchbedingung

Das CASE mit Suchbedingung prüft bei jedem WHEN eine boolesche Bedingung und gibt den ersten Treffer zurück. Es ist die flexibelste Form, und die Reihenfolge ist entscheidend – die erste wahre Bedingung gewinnt.

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;

Einfaches CASE

Das einfache CASE vergleicht einen Ausdruck mit einer Liste von Werten. Es ist kürzer bei Gleichheitsprüfungen, kann aber weder Bereiche noch NULL-Prüfungen verarbeiten.

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;

CASE mit Suchbedingung oder einfaches CASE: Wann welches verwenden

Verwenden Sie einfaches CASE für Gleichheitsprüfungen gegen feste Werte und ein CASE mit Suchbedingung für Bereiche oder NULL. Eine wichtige Stolperfalle: Ein einfaches CASE kann niemals auf NULL zutreffen – verwenden Sie dafür IS NULL in einem CASE mit Suchbedingung.

-- 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;

Die Reihenfolge der WHEN-Zweige ist entscheidend

Da der erste passende Zweig gewinnt, ordnen Sie Ihre WHEN-Bedingungen von der spezifischsten zur allgemeinsten. Setzen Sie einen großzügigen Schwellenwert an den Anfang, wird ein Wert von 95 falsch eingeordnet.

-- 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 und das implizite NULL

Wenn nichts zutrifft und Sie ELSE weglassen, gibt CASE NULL zurück. Fügen Sie ein explizites ELSE für den Standardfall hinzu, damit unerwartete Werte nicht stillschweigend zu NULL werden.

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

Bedingte Aggregation (Pivot-Muster)

Der wertvollste Interviewtrick: die bedingte Aggregation. Platzieren Sie CASE innerhalb von SUM oder COUNT, um Zeilen pro Kategorie in einem Durchlauf zu zählen – ein übersichtlicher Bericht im Pivot-Stil.

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 ignoriert NULL: Eine CASE-Abkürzung

Da COUNT NULL-Werte ignoriert, können Sie ELSE weglassen, sodass nicht passende Zeilen zu NULL werden und nicht gezählt werden. Das ist eine etwas kürzere Variante für bedingtes Zählen.

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 für eine benutzerdefinierte Sortierung

Verwenden Sie CASE in ORDER BY, um nach einer benutzerdefinierten Priorität statt nach einer einfachen alphabetischen oder numerischen Reihenfolge zu sortieren – etwa dringend vor normal vor allem anderen.

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

Typsicherheit über alle Zweige hinweg

Alle Zweige eines CASE müssen einen kompatiblen Typ zurückgeben. Das Mischen einer Zahl und einer Zeichenfolge kann einen Fehler verursachen oder eine Typkonvertierung erzwingen – wählen Sie einen Ausgabetyp und verwenden Sie bei Bedarf eine explizite Typkonvertierung.

-- 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 für bedingte Filterung

CASE in WHERE ermöglicht es Ihnen, abhängig von einem Kennzeichen unterschiedliche Filterlogik anzuwenden – etwa einen unterschiedlichen Preisschwellenwert pro Region. Das ist oft übersichtlicher als ein Geflecht aus ANDs und ORs.

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

Kurzer Test

Sagen Sie das Ergebnis voraus.

Zusammenfassung

Zusammenfassung: CASE gibt einen einzelnen Wert zurück und funktioniert in SELECT, WHERE, ORDER BY und Aggregationen. Ein CASE mit Suchbedingung verarbeitet Bereiche und NULL; der erste Treffer gewinnt; kein Treffer bedeutet NULL; die Typen aller Zweige müssen kompatibel sein.

Häufig gestellte Fragen

Ist die Lektion „CASE-Ausdrücke in SELECT“ kostenlos?

Ja — der vollständige Text von „CASE-Ausdrücke in SELECT“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „CASE-Ausdrücke in SELECT“?

Inline-Bedingungslogik sowie die gesuchten und einfachen CASE-Formen schreiben Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Coding Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „CASE-Ausdrücke in SELECT“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Spalten projizieren und Fallstricke bei Aliasen
  2. Berechnete Spalten und die Rangfolge von Ausdrücken
  3. DISTINCT oder GROUP BY für Eindeutigkeit
  4. CASE-Ausdrücke in SELECT
← Zurück zu Coding Interview Prep