Zurück zur Artikelliste Artikel
16 Leseminuten

SQL CASE WHEN Erläutert: 10 einfache Beispiele für Einsteiger

Die CASE WHEN-Anweisung ermöglicht es uns, Entscheidungen über unsere Daten zu treffen und Datensätze auf der Grundlage bestimmter Bedingungen zu kategorisieren und zu manipulieren. In diesem Artikel erfahren Sie, wie Sie CASE WHEN verwenden können.

Stellen Sie sich vor, Sie entscheiden, was Sie an diesem Tag anziehen wollen. Wenn es regnet, holen Sie Ihren Regenschirm heraus, wenn nicht, lassen Sie ihn zu Hause. Diese Entscheidungsprozedur ist im Wesentlichen dasselbe wie eine SQL-Anweisung CASE WHEN.

In der Welt von SQL funktioniert die Anweisung CASE WHEN ähnlich wie ein if-then-else Ausdruck, der es uns ermöglicht, benutzerdefinierte Klassifizierungen innerhalb einer Abfrage zu erstellen. Andere Programmiersprachen verwenden eine ähnliche Logik - z. B. Python if, elif und else, und JavaScript verwendet die Anweisung switch. Die weite Verbreitung dieses Konzepts in allen Programmiersprachen unterstreicht, wie wichtig es ist: Es gibt den Benutzern die Möglichkeit, eine Vielzahl von Situationen zu bewältigen. In SQL ist dieses Konstrukt ein wichtiges Werkzeug für die Datenanalyse.

In diesem Artikel finden Sie praktische Übungen zur Verwendung der Anweisung CASE WHEN für die Datenanalyse. Mit dieser Anweisung können Analysten eine individuelle Logik für die Klassifizierung und Entscheidungsfindung in ihren Abfragen erstellen. Dadurch wird die Genauigkeit der Abfrage und die Tiefe der Analyse verbessert.

Wenn dies interessant klingt, dann sollten Sie sich unseren Erstellen einfacher SQL-Berichte Kurs? In diesem Kurs werden nicht nur die Details der CASE WHEN Syntax behandelt, sondern auch die Verwendung von SQL-Aggregationsfunktionen wie COUNT() und SUM(). Sie werden schnell lernen, wie man Durchschnittswerte berechnet, Geschäftsgruppierungen vergleicht und komplizierte Abfragen zusammenstellt.

Lassen Sie uns nun in die Feinheiten von SQL CASE WHEN eintauchen und die Anweisung anhand einiger einfacher Beispiele entmystifizieren!

Verstehen der CASE WHEN-Syntax

Um die Komplexität der Anweisung CASE WHEN zu verstehen, müssen wir ihre Syntax anhand einiger Beispiele aufschlüsseln.

Grundlegende Syntax: CASE WHEN THEN

Zu Beginn werden wir die einfachste Syntax der SQL-Anweisung CASE WHEN untersuchen. Dieses Konstrukt ist besonders hilfreich, um Datensätze nach einem bestimmten Kriterium zu segmentieren und eine neue Spalte zu erzeugen, in der die Ergebnisse angezeigt werden. Hier ist die Syntax:

SELECT
    column_name,
    CASE
        WHEN condition THEN result
    END AS new_column
FROM
    your_table;

Erläutern wir jeden Teil im Detail:

  • SELECT: Gibt die Spalten an, die in die Ergebnismenge aufgenommen werden sollen.
  • CASE: Wertet die angegebene Bedingung für jede Zeile des Datensatzes aus. Dies initiiert die bedingte Logik.
  • WHEN condition THEN result: Definiert die zu prüfende Bedingung und das Ergebnis, das zugewiesen werden soll, wenn die Bedingung erfüllt ist. Dies ermöglicht eine dynamische Klassifizierung der Daten.
  • END: Markiert das Ende der CASE Es bedeutet, dass die Auswertung der Bedingungen und die Zuweisung der Ergebnisse abgeschlossen sind.
  • AS new_column: Erzeugt eine neue Spalte namens new_column in der Ergebnismenge. In dieser Spalte werden die Ergebnisse der Auswertung von CASE WHEN für jede Zeile erfasst.

Dieser Ansatz ist besonders wertvoll, wenn Sie eine kategoriale Dimension in Ihre Daten einführen möchten, die auf bestimmten Bedingungen basiert. In der folgenden Abfrage verwenden wir CASE WHEN, um Städte mit Temperaturen von mehr als 30 Grad Celsius als Hoch zu kennzeichnen:

SELECT
    city,
    temperature,
    CASE
        WHEN temperature > 30 THEN 'High'
    END AS temperature_category
FROM
    weather_data;

Dies vereinfacht die Analyse von Temperaturmustern durch eindeutige Schwellenwertkennzeichnungen in der neuen Spalte und trägt zu einem aussagekräftigeren und informativeren Datensatz für weitere Analysen bei.

Beachten Sie, dass bei dieser Anweisung Datensätze, die die angegebene Bedingung nicht erfüllen, in der neuen Spalte den Wert NULL haben. Dies führt uns zu unserer nächsten Anweisung.

CASE WHEN THEN ELSE

Ohne eine ELSE -Klausel besteht die Gefahr, dass unsere neue Spalte NULL -Werte enthält. Durch die Einbindung einer ELSE -Klausel liefert dieses Konstrukt ein Ausweichergebnis, wenn die Bedingung nicht erfüllt ist. Dies ist nützlich, wenn Sie sicherstellen wollen, dass jeder Datensatz im Dataset einen sinnvollen Wert in der neuen Spalte erhält.

Hier ist die Syntax:

SELECT
    column_name,
    CASE
        WHEN condition THEN result
        ELSE alternative_result
    END AS new_column
FROM
    your_table;

Schauen wir uns die Bedingungen an:

  • WHEN condition THEN result: Definiert die zu prüfende Hauptbedingung und das entsprechende Ergebnis, das zugewiesen werden soll, wenn die Bedingung erfüllt ist.
  • ELSE alternative_result: Gibt ein alternatives Ergebnis an, das zugewiesen werden soll, wenn die primäre Bedingung nicht erfüllt ist. Dadurch wird sichergestellt, dass die neue Spalte keine NULL Werte enthält.

Kehren wir zum Beispiel mit den Wetterdaten zurück. Durch die Einführung einer ELSE -Klausel werden Temperaturen unterhalb des angegebenen Schwellenwerts nun als " Normal" bezeichnet. Mit dieser Konstruktion wird sichergestellt, dass jeder Datensatz in der neuen Spalte einen definierten Wert hat, was die Genauigkeit der Datenanalyse verbessert. Dies ist die neue Abfrage:

SELECT
    city,
    temperature,
    CASE
        WHEN temperature > 30 THEN 'High'
        ELSE 'Normal'
    END AS temperature_category
FROM
    weather_data;

Wie Sie sehen können, werden alle Temperaturen unter 30 Grad Celsius als normal eingestuft; alles über 30 ist hoch.

Mehrere DANNs in CASE WHEN

Was passiert, wenn wir mehr als eine Bedingung auf unsere Daten anwenden wollen? Das folgende Beispiel zeigt, wie man die Syntax der Anweisung CASE WHEN mit mehreren Bedingungen verwenden kann. Dies bietet eine Methode zur Klassifizierung von Daten nach verschiedenen Standards:

SELECT
    column_name,
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        -- Additional WHEN clauses as needed
    END AS new_column
FROM
    your_table;

Schlüsseln wir die Bedingungen auf:

  • WHEN condition1 THEN result1: Definiert die erste zu prüfende Bedingung und das entsprechende Ergebnis, wenn diese Bedingung erfüllt ist.
  • WHEN condition2 THEN result2: Legt eine zweite Bedingung und das zugehörige Ergebnis fest.
  • Zusätzliche WHEN-Klauseln können für weitere Bedingungen hinzugefügt werden.

In einer CASE -Anweisung mit mehreren WHEN -Klauseln ist die Reihenfolge von Bedeutung. Die Bedingungen werden nacheinander ausgewertet, und die erste erfüllte Bedingung bestimmt das Ergebnis. Sobald eine Bedingung erfüllt ist, wird das entsprechende Ergebnis zurückgegeben und die nachfolgenden WHEN -Klauseln werden übersprungen. In diesem Beispiel wird, wenn condition1 für eine bestimmte Zeile wahr ist, result1 zurückgegeben, und condition2 wird für diese Zeile nicht ausgewertet.

Im Zusammenhang mit unserem vorherigen Wetterdatenbeispiel enthält die endgültige Abfrage mehrere Klauseln sowie eine ELSE -Klausel, um sicherzustellen, dass alle Datensätze, die die angegebenen Temperaturbedingungen nicht erfüllen, eine Nicht-NULL-Ausgabe erhalten. Diese Struktur stellt sicher, dass jedem Datensatz in der Spalte temperature_category eine aussagekräftige Bezeichnung zugewiesen wird; dies trägt zu einer umfassenderen und informativeren Wetteranalyse bei. Hier ist die Abfrage:

SELECT
    city,
    temperature,
    CASE
        WHEN temperature > 30 THEN 'High'
        WHEN temperature <= 30 AND temperature > 20 THEN 'Moderate'
        ELSE 'Low'
    END AS temperature_category
FROM
    weather_data;

Wie Sie sehen können, haben wir jetzt drei Wetterkategorien: Hoch für Temperaturen über 30 Grad, Mäßig für Temperaturen zwischen 20 und 30 Grad und Niedrig für alle anderen Temperaturen - d. h. für Temperaturen unter 20 Grad Celsius.

Wenden wir diese Konzepte nun auf einige reale Datenanalyseprobleme an.

Beispiele für die Verwendung von CASE WHEN in der Datenanalyse

Beispiel 1: Daten kategorisieren

Das Verständnis von Transaktionsdaten ist wichtig für die Bewertung des Kaufverhaltens von Kunden in einem Einzelhandelsgeschäft.

Nehmen wir an, Sie haben einen Datensatz mit Verkaufstransaktionen. Es könnte schwierig sein, schnell Einblicke in die Verteilung der Transaktionen zu erhalten und die rohen Transaktionsbeträge zu analysieren. Eine Möglichkeit, mit dieser Situation umzugehen, besteht darin, die Transaktionen nach dem Betrag zu gruppieren. Hier eine Abfrage, mit der wir Transaktionen in die Kategorien Hoch, Mittel und Niedrig gruppieren können:

SELECT
    TransactionID,
    Amount,
    CASE
        WHEN Amount < 1000 THEN 'Low'
        WHEN Amount >= 1000 AND Amount < 5000 THEN 'Medium'
        WHEN Amount >= 5000 THEN 'High'
        ELSE 'Unknown'
    END AS TransactionCategory
FROM
    SalesTransactions;

Mit dem Ausdruck CASE können wir Transaktionen in sinnvolle Gruppen einteilen, was die Analyse vereinfacht und einen schnellen Überblick über Transaktionsmuster ermöglicht. Eine Transaktion mit einem Betrag von 980 wird als niedrig eingestuft, während eine Transaktion mit einem Betrag von 5.200 als hoch kategorisiert wird. Diese dynamische Kategorisierung vereinfacht die Analyse und bietet einen schnellen Überblick über Transaktionsmuster.

Beispiel 2: Behandlung von NULL-Werten

Die Verfolgung von Bestelldaten ist für eine E-Commerce-Plattform unerlässlich; sie hilft uns, das Kundenverhalten zu verstehen und bessere Zeitpläne für die Auftragsabwicklung zu entwickeln.

Nehmen wir an, Sie haben einen Datensatz, in dem die Spalte OrderDate eine große Anzahl von NULL Werten enthält. Bei der Untersuchung von auftragsbezogenen Daten können fehlende Werte in der Spalte OrderDate zu Missverständnissen oder Verwirrung führen. Schreiben wir also eine Abfrage, die Bestellungen in zwei Gruppen einteilt: solche mit einem Bestelldatum(Order Placed) und solche ohne Bestelldatum.

SELECT
    CustomerID,
    OrderDate,
    CASE
        WHEN OrderDate IS NULL THEN 'No Order Date'
        ELSE 'Order Placed'
    END AS OrderStatus
FROM
    Orders;

In diesem Fall unterscheidet der Ausdruck CASE zwischen Datensätzen mit und ohne Bestelldatum, wodurch eindeutige Bezeichnungen bereitgestellt werden und die Genauigkeit der Datenanalyse verbessert wird. Eine Zeile mit NULL OrderDate wird als Kein Bestelldatum bezeichnet, was bedeutet, dass für diese Transaktion kein bestimmtes Bestelldatum aufgezeichnet wurde. Im Gegensatz dazu wird eine Zeile mit einem bestimmten OrderDate, wie z. B. 2023-10-12, als " Order Placed" (Bestellung aufgegeben) gekennzeichnet, was darauf hinweist, dass eine Bestellung aufgegeben wurde und ein bestimmtes Bestelldatum hat.

Beispiel 3: Aggregierte Spalten erstellen

Um die Produktion und das Bestandsmanagement zu optimieren, möchte ein Fertigungsunternehmen möglicherweise die Nachfrage nach seinen Produkten ermitteln. Die unterschiedlichen Nachfragen für die verschiedenen Produkte lassen sich möglicherweise nicht unmittelbar anhand der verkauften Gesamtmenge erkennen. Daher können zusätzliche Spalten in der Ergebnismenge erstellt werden, indem Daten auf der Grundlage bestimmter Bedingungen oder Kriterien aggregiert werden.

Lassen Sie uns eine Beispielabfrage analysieren:

SELECT
    ProductID,
    SUM(Quantity) AS TotalQuantity,
    CASE
        WHEN SUM(Quantity) > 100 THEN 'High Demand'
        ELSE 'Normal Demand'
    END AS DemandLevel
FROM
    OrderDetails
GROUP BY
    ProductID;

Hier verwaltet der Ausdruck CASE die dynamische Kategorisierung der Nachfrageniveaus und ermöglicht es dem Unternehmen, Produkte mit hoher Nachfrage zu identifizieren und die Produktionspläne entsprechend anzupassen. Eine Zeile mit einem TotalQuantity von 120 wird als hoher Bedarf gekennzeichnet, was auf eine starke Nachfrage nach diesem spezifischen Produkt hinweist. Umgekehrt wird eine Zeile mit einem TotalQuantity von 80 als normale Nachfrage bezeichnet, was auf eine normale Nachfrage für dieses bestimmte Produkt hinweist.

Beispiel 4: Marketing-Analyse

Stellen Sie sich vor, Sie sind ein Online-Händler, der Marketingkampagnen und Lagerbestände planen möchte, indem er die Saisonalität der Kundenbestellungen analysiert. Es ist schwierig, saisonale Spitzenwerte oder vierteljährliche Trends zu erkennen, wenn man sich die Bestellungen ansieht, ohne die Daten nach Zeit zu klassifizieren; deshalb analysieren wir Daten auf der Grundlage von Datumsbereichen und bieten Einblicke in zeitliche Muster.

SELECT
    OrderDate,
    COUNT(*) AS OrderCount,
    CASE
        WHEN OrderDate BETWEEN '2023-01-01' AND '2023-03-31' THEN 'Q1'
        WHEN OrderDate BETWEEN '2023-04-01' AND '2023-06-30' THEN 'Q2'
        -- Add more quarters as needed
    END AS Quarter
FROM
    Orders
GROUP BY
    OrderDate;

Mithilfe des Ausdrucks CASE ordnen wir die Bestellungen nach Quartalen. Eine Zeile mit einem OrderDate von 2023-02-15 wird als Q1 gekennzeichnet, was bedeutet, dass die Bestellung in das erste Quartal des Jahres fällt. Eine Bestellung auf 2023-05-20 wird als Q2 gekennzeichnet, was bedeutet, dass sie in das zweite Quartal fällt. Auf diese Weise können Sie Ihre Marketingmaßnahmen strategisch planen und die Lagerbestände an die saisonale Nachfrage anpassen.

Beispiel 5: Kundensegmentierung

Ein Dienst, der ein Abonnement in Rechnung stellt, möchte seine Produkte und Marketingmaßnahmen an die Kaufgewohnheiten seiner Nutzer anpassen. Bei der Erstellung bestimmter Berichte muss ein Analyst die Kunden nach verschiedenen Kriterien gruppieren; im folgenden Beispiel werden die Kunden nach ihren Kaufgewohnheiten in Gruppen eingeteilt:

SELECT
    CustomerID,
    SUM(PurchaseAmount) AS TotalPurchase,
    CASE
        WHEN SUM(PurchaseAmount) < 1000 THEN 'Bronze'
        WHEN SUM(PurchaseAmount) < 5000 THEN 'Silver'
        WHEN SUM(PurchaseAmount) < 10000 THEN 'Gold'
        ELSE 'Platinum'
    END AS CustomerSegment
FROM
    Purchases
GROUP BY
    CustomerID;

Mit dem Ausdruck CASE werden die Kunden in Kategorien eingeteilt, so dass der Dienstanbieter personalisierte Werbeaktionen, Rabatte oder Dienstleistungen auf der Grundlage des Ausgabenniveaus der einzelnen Kundensegmente anbieten kann.

Beispiel 6: Kategorisierung von Produkten nach Preisklasse

Übung: Um fundierte Preis- und Marketingentscheidungen treffen zu können, ist es wichtig, die Verteilung der Produktpreise auf einer E-Commerce-Website zu verstehen. Bei einer so großen Anzahl von Produkten kann es schwierig sein, Einblicke zu erhalten. Sie wurden gebeten, die Daten zu vereinfachen, damit Ihr Chef das Preisumfeld verstehen und bessere Entscheidungen treffen kann.

Die Ausgabe dieser Übung sollte die Spalten ProductID, ProductName, Price und PriceCategory für jedes Produkt enthalten. Die Spalte PriceCategory sollte die Produkte wie folgt kategorisieren:

  • Niedriger Preis: Zugewiesen für Produkte mit Preisen unter 50.
  • Moderater Preis: Zugewiesen für Produkte mit Preisen zwischen 50 und 100.
  • Hoher Preis: Zugewiesen für Produkte mit Preisen über 100.

Lösung:

SELECT
    ProductID,
    ProductName,
    Price,
    CASE
        WHEN Price < 50 THEN 'Low Price'
        WHEN Price >= 50 AND Price < 100 THEN 'Moderate Price'
        WHEN Price >= 100 THEN 'High Price'
    END AS PriceCategory
FROM
    Products;

Ausgabe:

ProductIDProductNamePricePriceCategory
1Ultimate Headphones30Low Price
2Smartwatch XL80Moderate Price
3High-Performance Laptop120High Price

Erklärung der Lösung: In diesem Beispiel wird die Anweisung CASE WHEN effektiv genutzt, um Produkte nach Preisklassen zu kategorisieren. Die Bedingungen sind klar und die resultierenden Beschriftungen sind aussagekräftig, was eine einfachere Analyse ermöglicht.

Beispiel 7: Analyse des Status der Auftragsabwicklung

Übung: In einem Online-Shop ist es für die Kundenzufriedenheit entscheidend, dass die Bestellungen pünktlich geliefert werden. Bei einem hohen Auftragsvolumen ist es schwierig, Erkenntnisse zu gewinnen. Wie können Sie die Datenanalyse verbessern, um die Auftragsabwicklung zu verfolgen und zu optimieren?

Das erwartete Ergebnis dieser Übung sollte eine klare Aufschlüsselung der einzelnen Bestellungen enthalten, einschließlich der Spalten OrderID, OrderDate, ShippedDate und FulfillmentStatus. In der Spalte FulfillmentStatus werden die Bestellungen in drei Gruppen eingeteilt:

  • Nicht versandt: Zeigt Bestellungen an, die auf den Versand warten, mit einem NULL ShippedDate.
  • Verspätet versandt: Bezeichnet Bestellungen, bei denen die ShippedDate mehr als drei Tage von der OrderDate entfernt ist, was eine Verzögerung signalisiert.
  • Pünktlich versandt: Wird auf Bestellungen angewandt, die innerhalb von drei Tagen nach OrderDate versandt wurden, um eine rechtzeitige Erfüllung zu gewährleisten.

Lösung:

SELECT
    OrderID,
    OrderDate,
    ShippedDate,
    CASE
        WHEN ShippedDate IS NULL THEN 'Not Shipped'
        WHEN ShippedDate > DATEADD(day, 3, OrderDate) THEN 'Shipped Late'
        ELSE 'Shipped On Time'
    END AS FulfillmentStatus
FROM
    Orders;

Ausgabe:

OrderIDOrderDateShippedDateFulfillmentStatus
12023-01-102023-01-12Shipped On Time
22023-02-15NULLNot Shipped
32023-03-202023-03-25Shipped Late

Erklärung der Lösung: Dieses Beispiel zeigt die effektive Verwendung von CASE WHEN zur Kategorisierung von Bestellungen nach Erfüllungsstatus. Die Bedingungen sind logisch strukturiert und geben einen klaren Einblick in den Erfüllungsprozess. Die Abfrage stimmt mit den zuvor besprochenen Tipps überein, indem sie NULL-Werte anspricht, so dass Bestellungen ohne Versanddatum nicht als NULL aufgezeichnet werden.

Beispiel 8: Segmentierung von Kunden nach Kaufhäufigkeit

Übung: Im Online-Handel ist es wichtig, die Kaufgewohnheiten der Kunden zu verstehen. Wenn Sie jedoch einen großen Kundenstamm haben, ist es eine Herausforderung, klare Erkenntnisse zu gewinnen. Berücksichtigen Sie dies bei dieser Übung, da Sie gebeten werden, Kunden nach ihrer Kaufhäufigkeit zu segmentieren.

Die erwartete Ausgabe dieser Übung sollte eine segmentierte Ansicht der Kunden auf der Grundlage ihrer Kaufhäufigkeit liefern. Sie sollte die Spalten CustomerID, TotalOrders und CustomerSegment enthalten. In der Spalte CustomerSegment werden die Kunden in drei Gruppen eingeteilt:

  • Seltener Käufer: Gilt für Kunden mit einer Einkaufshäufigkeit von einer Bestellung.
  • Regelmäßige Käufer: Gilt für Kunden mit einer Kaufhäufigkeit zwischen zwei und fünf Bestellungen.
  • Häufige Käufer: Gilt für Kunden mit einer Kaufhäufigkeit von mehr als fünf Bestellungen.

Lösung:

SELECT
    CustomerID,
    COUNT(OrderID) AS TotalOrders,
    CASE
        WHEN COUNT(OrderID) = 1 THEN 'Infrequent Shopper'
        WHEN COUNT(OrderID) >= 2 AND COUNT(OrderID) <= 5 THEN 'Regular Shopper'
        WHEN COUNT(OrderID) > 5 THEN 'Frequent Shopper'
    END AS CustomerSegment
FROM
    Orders
GROUP BY
    CustomerID;

Ausgabe:

CustomerIDTotalOrdersCustomerSegment
1013Regular Shopper
1021Infrequent Shopper
1038Frequent Shopper

Erklärung der Lösung: In diesem Beispiel werden Aggregatfunktionen mit der CASE WHEN-Anweisung verwendet, um die Kunden nach Bestellhäufigkeit zu kategorisieren. Auf diese Weise können wir die Kunden nach der Häufigkeit ihrer Ausgaben auf der Website kategorisieren. Weitere Beispiele für die Kombination von Aggregatfunktionen mit der CASE WHEN-Anweisung finden Sie in unserem Artikel Wie man CASE WHEN mit SUM() in SQL verwendet.

Beispiel 9: Bewertung der Mitarbeiterleistung

Übung: Für effektive Personalentscheidungen ist die Bewertung der Mitarbeiterleistung unerlässlich. Bei so vielen Mitarbeitern ist der Analyseprozess jedoch sehr komplex. Wie können Sie die Datenanalyse rationalisieren, um Mitarbeiter auf der Grundlage von Produktivitätswerten zu bewerten und zu kategorisieren?

Das erwartete Ergebnis dieser Übung sollte die Analyse der Mitarbeiterleistung rationalisieren und eine klare Bewertung der einzelnen Mitarbeiter liefern. Sie sollte die Spalten EmployeeID, ProductivityScore und PerformanceRating zurückgeben. In der Spalte PerformanceRating werden die Mitarbeiter in drei Gruppen eingeteilt:

  • Ausgezeichnet: Angewandt auf Mitarbeiter mit einer ProductivityScore von 90 oder höher, was auf eine hervorragende Leistung hinweist.
  • Gut: Wird auf Mitarbeiter mit einem ProductivityScore zwischen 70 und 89 angewandt, was auf eine gute Leistung hindeutet.
  • Verbesserungsbedürftig: Wird auf Mitarbeiter angewandt, deren ProductivityScore unter 70 liegt, was auf Bereiche hinweist, in denen Verbesserungen erforderlich sind.

Lösung:

SELECT
    EmployeeID,
    ProductivityScore,
    CASE
        WHEN ProductivityScore >= 90 THEN 'Excellent'
        WHEN ProductivityScore >= 70 AND ProductivityScore < 90 THEN 'Good'
        WHEN ProductivityScore < 70 THEN 'Needs Improvement'
    END AS PerformanceRating
FROM
    Employees;

Ausgabe:

EmployeeIDProductivityScorePerformanceRating
20195Excellent
20275Good
20360Needs Improvement

Erklärung der Lösung: Durch die Definition von Leistungsbereichen mit der Anweisung CASE WHEN können wir Mitarbeiter auf der Grundlage von Produktivitätswerten kategorisieren. Da die Bedingungen klar sind, bieten die resultierenden Leistungsbewertungen umsetzbare Erkenntnisse.

Beispiel 10: Produkte nach Erscheinungsjahr gruppieren

Übung: Die Verwaltung des Produktbestands erfordert ein Verständnis der Produktlebenszyklen. In einem großen Katalog kann die Identifizierung von Mustern schwierig sein. Wie können Sie dies vereinfachen, um Produkte auf der Grundlage ihrer Erscheinungsjahre effektiv zu gruppieren?

Das erwartete Ergebnis dieser Übung sollte eine klare Gruppierung der Produkte auf der Grundlage ihrer Erscheinungsjahre sein. Sie sollte die Spalten ProductID, ProductName, ReleaseYear und ReleaseCategory enthalten. In der Spalte ReleaseCategory werden die Produkte in drei Gruppen eingeteilt:

  • Neue Version: Wird auf Produkte angewandt, die im Jahr 2023 veröffentlicht werden, und zeigt die neuesten Ergänzungen des Katalogs an.
  • Jüngste Veröffentlichung: Wird auf Produkte angewandt, die zwischen 2018 und 2022 veröffentlicht wurden, was auf kürzlich eingeführte Produkte hinweist.
  • Alte Version: Wird auf Produkte angewandt, die vor dem Jahr 2018 veröffentlicht wurden, um ältere Artikel im Katalog zu kennzeichnen.

Lösung:

SELECT
    ProductID,
    ProductName,
    EXTRACT(YEAR FROM ReleaseDate) AS ReleaseYear,
    CASE
        WHEN EXTRACT(YEAR FROM ReleaseDate) = 2023 THEN 'New Release'
        WHEN EXTRACT(YEAR FROM ReleaseDate) >= 2018 AND EXTRACT(YEAR FROM ReleaseDate) < 2023 THEN 'Recent Release'
        WHEN EXTRACT(YEAR FROM ReleaseDate) < 2018 THEN 'Old Release'
    END AS ReleaseCategory
FROM
    Products;

Ausgabe:

ProductIDProductNameReleaseYearReleaseCategory
1Chic Denim Jacket2022New Release
2Lunar Maxi Dress2019Recent Release
3Flare Athletic Leggings2015Old Release

Erklärung der Lösung: Dieses letzte Beispiel zeigt die Vielseitigkeit von CASE WHEN. Hier haben wir es mit den Funktionen von DATETIME verwendet, um Produkte nach ihrem Erscheinungsjahr zu kategorisieren.

8 Tipps zur Verwendung von CASE WHEN in der Datenanalyse

Hier sind 10 Tipps, die Ihnen helfen, die CASE WHEN Anweisung optimal zu nutzen:

  1. Verstehen Sie Ihre Daten: Stellen Sie vor der Implementierung von CASE WHEN sicher, dass Sie die Daten, mit denen Sie arbeiten, genau verstehen. Ermitteln Sie die spezifischen Bedingungen oder Kriterien, die für Ihre Analyse von Nutzen sind.
  2. Beginnen Sie einfach: Wenn Sie CASE WHEN zum ersten Mal verwenden, beginnen Sie mit einfachen Bedingungen. Bei Bedarf können Sie die Komplexität schrittweise erhöhen. So bleibt Ihr Code lesbar und die Fehlerbehebung wird erleichtert.
  3. Verwenden Sie aussagekräftige Bezeichnungen: Wählen Sie bei der Kategorisierung von Daten klare und aussagekräftige Bezeichnungen. Dies verbessert die Interpretierbarkeit Ihrer Ergebnisse und macht die Analyse für andere leichter zugänglich.
  4. Datentypen berücksichtigen: Vergewissern Sie sich, dass die Datentypen in Ihren Bedingungen den Daten entsprechen, die Sie untersuchen. Nicht übereinstimmende Datentypen können zu unerwartetem Verhalten und Fehlern führen.
  5. Kombinieren Sie Bedingungen logisch: Verwenden Sie die Operatoren AND und OR, um zusammengesetzte Bedingungen auszudrücken. Klammern können helfen, die Reihenfolge der Auswertung zu verdeutlichen.
  6. Adressieren Sie NULL-Werte: Ziehen Sie die Verwendung von IS NULL, IS NOT NULL oder ELSE Bedingungen in Betracht, um explizit alle Spalten in Ihrer Analyse zu behandeln, die NULL-Werte enthalten können.
  7. Nutzen Sie aggregierte Spalten: CASE WHEN ist besonders nützlich, wenn Sie aggregierte Spalten erstellen. So können Sie beispielsweise Gruppen auf der Grundlage aggregierter Werte (z. B. Summen oder Durchschnittswerte) kategorisieren, um Einblicke in Muster oder Trends zu erhalten.
  8. Testen und validieren: Testen Sie Ihre CASE WHEN Anweisungen an einer kleineren Teilmenge Ihrer Daten, bevor Sie sie auf den gesamten Datensatz anwenden. So können Sie unerwartete Probleme erkennen und sicherstellen, dass die Logik wie vorgesehen funktioniert.

Mehr als nur die Grundlagen mit CASE WHEN

Die CASE WHEN-Anweisung in SQL ist ein zentrales Werkzeug. Sie bietet einen strukturierten und flexiblen Ansatz für bedingte Logik, der die alltägliche Entscheidungsfindung widerspiegelt. Außerdem ist sie dank ihrer intuitiven Natur eine leicht zugängliche und dennoch leistungsstarke Funktion von SQL. Wenn Sie benutzerdefinierte Klassifizierungen erstellen, NULL-Werte behandeln und Daten dynamisch kategorisieren müssen, ist die CASE WHEN-Anweisung ein echter Gewinn.

Ganz gleich, ob Sie SQL-Anfänger oder erfahrener Analytiker sind, die Beherrschung der CASE WHEN-Anweisung ist ein wichtiger Schritt zur Erschließung tieferer Ebenen der Datenanalyse. Vertiefen Sie die Komplexität der Anweisung mit unseren Artikeln Wie man CASE in ORDER BY in SQL verwendet und Wie man CASE WHEN in GROUP BY verwendet. Und für eine interaktive Lernerfahrung, besuchen Sie unseren Erstellen einfacher SQL-Berichte Kurs. Viel Spaß beim Lernen!