Dieser Artikel zeigt Ihnen detailliert, wie Sie SQL CASE WHEN verwenden

Dieser Artikel zeigt Ihnen detailliert, wie Sie SQL CASE WHEN verwenden

Einfache CASE WHEN-Funktion:

FALL-ERGEBNIS WENN 'A' DANN 'Ausgezeichnet' SONST 'Nicht bestanden' ENDE
FALL-ERGEBNIS WENN 'B' DANN 'Gut' SONST 'Nicht bestanden' ENDE
FALL-ERGEBNIS WENN 'C' DANN 'Mittel' SONST 'Fehlgeschlagen' ENDE

Dies entspricht der Verwendung der bedingten Ausdrucksfunktion CASE WHEN:

Fall: Wenn Punktzahl = „A“, dann „Ausgezeichnet“
     WENN ERGEBNIS = ‚B‘, DANN ‚Gut‘
     WENN ERGEBNIS = 'C' DANN 'Mittel' SONST 'Nicht bestanden' ENDE

Der Wert nach THEN sollte vom gleichen Typ sein wie der Wert nach ELSE, andernfalls wird ein Fehler gemeldet. wie folgt:

Fallergebnis: Wenn „A“ ist, dann „Ausgezeichnet“, sonst 0. Ende

Wenn die Datentypen „Ausgezeichnet“ und 0 inkonsistent sind, wird ein Fehler gemeldet:

[Err] ORA-00932: inkonsistente Datentypen: CHAR erwartet, NUMBER erhalten

Die einfache CASE WHEN-Funktion kann nur einige einfache Geschäftsszenarien verarbeiten, während die Schreibregeln des bedingten CASE WHEN-Ausdrucks flexibler sind.

CASE WHEN-Funktion für bedingte Ausdrücke: ähnlich der IF ELSE-Anweisung in JAVA.

Format:

FALL, WENN Bedingung, DANN Ergebnis

[WANN...DANN...]

ELSE Ergebnis

ENDE

Bedingung ist ein Ausdruck, der einen Booleschen Typ zurückgibt. Wenn der Ausdruck „true“ zurückgibt, gibt die gesamte Funktion den Wert des entsprechenden Ergebnisses zurück. Wenn alle Ausdrücke „false“ sind, wird der Wert des Ergebnisses nach ElSE zurückgegeben. Wenn die ELSE-Klausel weggelassen wird, wird NULL zurückgegeben.

Im Folgenden sind einige häufige Szenarien aufgeführt.

Szenario 1: Es gibt eine Punktzahl, Punktzahl < 60 ergibt eine nicht bestandene Punktzahl, Punktzahl >= 60 ergibt eine bestandene Punktzahl und Punktzahl >= 80 ergibt eine ausgezeichnete Punktzahl

WÄHLEN
    STUDENTENNAME,
    (FALL, WENN Punktzahl < 60, DANN „nicht bestanden“
        WENN Punktzahl >= 60 UND Punktzahl < 80, DANN „bestanden“
        WENN Punktzahl >= 80, DANN „Ausgezeichnet“
        ELSE 'Ausnahme' END) AS REMARK
AUS
    TISCH

Hinweis : Wenn Sie prüfen möchten, ob die Punktzahl null ist, ist dies eine falsche Schreibweise. WENN Punktzahl = null, DANN „nicht bei der Prüfung anwesend“. Die korrekte Schreibweise lautet:

CASE WHEN score IS NULL THEN 'Nicht bei der Prüfung anwesend' ELSE 'Normal' END

Szenario 2: Der Lehrer muss zählen, wie viele Jungen und Mädchen es in der Klasse gibt und wie viele Jungen und Mädchen die Prüfung bestanden haben. Der Lehrer muss eine SQL-Anweisung verwenden, um die Ergebnisse auszugeben.

Die Tabellenstruktur ist wie folgt: Im Feld STU_SEX steht 0 für einen Jungen und 1 für ein Mädchen.

STU_CODE STU_NAME STU_SEX STU_SCORE
XM Xiao Ming 0 88
XL Xiaolei 0 55
XF Xiaofeng 0 45
XH Kleines Rot 1 66
XN Xiaoni 1 77
XY Xiao Yi 1 99
WÄHLEN 
	SUMME (FALL, WENN STU_SEX = 0, DANN 1, SONST 0, ENDE) ALS MALE_COUNT,
	SUMME (FALL, WENN STU_SEX = 1, DANN 1, SONST 0, ENDE) ALS FEMALE_COUNT,
	SUMME (FALL, WENN STU_SCORE >= 60 UND STU_SEX = 0, DANN 1, SONST 0, ENDE) ALS MALE_PASS,
	SUMME (FALL, WENN STU_SCORE >= 60 UND STU_SEX = 1, DANN 1, SONST 0, ENDE) ALS FEMALE_PASS
AUS 
	THTF_STUDENTEN

Die Ausgabe lautet wie folgt:

MÄNNERANZAHL ANZAHL_WEIBLICHER_PERSONEN MALE_PASS FEMALE_PASS
3 3 1 3

Szenario 3: Klassische Zeilen-Spalten-Konvertierung und statistische Analyse mit Aggregatfunktionen

Nun ist es erforderlich, den gesamten Wasserverbrauch, den Stromverbrauch und den Wärmeverbrauch jeder Stadt zu berechnen und die Ergebnisse mithilfe einer SQL-Anweisung auszugeben.

Die Energieverbrauchstabelle sieht wie folgt aus: E_TYPE steht für den Energieverbrauchstyp, 0 steht für den Wasserverbrauch, 1 steht für den Stromverbrauch und 2 steht für den Wärmeverbrauch

E_CODE E_WERT E_TYP
Peking 28,50 0
Peking 23.51 1
Peking 28.12 2
Peking 12.30 0
Peking 15.46 1
Schanghai 18,88 0
Schanghai 16,66 1
Schanghai 19,99 0
Schanghai 10.05 0
WÄHLEN 
	E_CODE,
	SUM(CASE WHEN E_TYPE = 0 THEN E_VALUE ELSE 0 END) AS WATER_ENERGY,--Wasserverbrauch SUM(CASE WHEN E_TYPE = 1 THEN E_VALUE ELSE 0 END) AS ELE_ENERGY,--Stromverbrauch SUM(CASE WHEN E_TYPE = 2 THEN E_VALUE ELSE 0 END) AS HEAT_ENERGY--Wärmeverbrauch FROM 
	THTF_ENERGY_TEST
GRUPPELN NACH
	E_CODE

Die Ausgabe ist wie folgt :

E_CODE WASSER_ENERGIE ELE_ENERGIE WÄRME_ENERGIE
Peking 40,80 38,97 28.12
Schanghai 48,92 16,66 0

Szenario 4: Verwenden von Unterabfragen in CASE WHEN

Berechnen Sie die Stromkosten auf Basis des Stromverbrauchs der Stadt. Gehen Sie davon aus, dass der Stückpreis für den Stromverbrauch in drei Stufen unterteilt ist, und verwenden Sie die entsprechenden Preise, um die Kosten entsprechend den unterschiedlichen Energieverbrauchswerten zu berechnen.

Die Preisliste lautet wie folgt:

P_PRICE P_EBENE P_LIMIT
1.20 0 10
1,70 1 30
2,50 2 50

Wenn der Energieverbrauchswert kleiner als 10 ist, wird der P_PRICE-Wert bei P_LEVEL=0 verwendet. Wenn der Energieverbrauchswert größer als 10 und kleiner als 30 ist, wird der P_PRICE-Wert bei P_LEVEL=1 verwendet.

FALL, WENN Energie <= (WÄHLEN SIE P_LIMIT AUS TABELLENPREIS, WO P_LEVEL = 0) DANN (WÄHLEN SIE P_PRICE AUS TABELLENPREIS, WO P_LEVEL = 0)
    WENN Energie > (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 0) UND Energie <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 1) DANN (SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 1)
    WENN Energie > (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 1) UND Energie <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 2) DANN (SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 2)

Szenario 5: Kombiniert mit der Max-Aggregationsfunktion

Die CASE WHEN-Funktion ist einfach zu verwenden und leicht zu verstehen. Dieser Artikel gibt nur eine kurze Einführung in ihre Verwendung. In der tatsächlichen Arbeit muss sie je nach unterschiedlichen Geschäftsszenarien flexibel eingesetzt werden.

Zusammenfassen

Dieser Artikel endet hier. Ich hoffe, er kann Ihnen helfen. Ich hoffe auch, dass Sie mehr Inhalten auf 123WORDPRESS.COM mehr Aufmerksamkeit schenken können!

Das könnte Sie auch interessieren:
  • Beispiel für die Verwendung von Urteilsaussagen (IF ELSE/CASE WHEN) in SQL Server
  • SqlServer verwendet Case When, um Fuzzy-Abfrageprobleme mit mehreren Bedingungen zu lösen
  • SQL lernen: Verwendung von CASE WHEN THEN ELSE END
  • Kurze Analyse zweier Methoden zur Zeilen- und Spaltenkonvertierung von SQL-Anweisungen: case...when und Anwendung der Pivot-Funktion
  • Tipps zur Verwendung von Case When Then in SQL-Aggregatfunktionen
  • So verwenden Sie die Case-Why-Syntax in SQL
  • Detaillierte Erläuterung der spezifischen Verwendung von SQL CASE WHEN

<<:  Zusammenfassung der Dinge, auf die Sie in der Fußzeile einer Webseite achten sollten

>>:  CSS zum Erzielen des Skeleton Screen-Effekts

Artikel empfehlen

Detaillierte Erklärung der neuen Erfahrung von Vite

Was ist Vite? (Es ist ein neues Spielzeug im Fron...

mysql Backup-Skript und halten Sie es für 7 Tage

Skriptanforderungen: Sichern Sie die MySQL-Datenb...

Zwei Möglichkeiten zum Aktivieren der Firewall im Linux-Dienst

Es gibt zwei Möglichkeiten: 1. Servicemethode Übe...

So migrieren Sie den MySQL-Speicherort auf eine neue Festplatte

1. Bereiten Sie eine neue Festplatte vor und form...

So löschen Sie eine Eigenschaft eines Objekts in JavaScript

1. löschen delete ist die einzige wirkliche Mögli...

Detaillierte Erklärung der Mixin-Verwendung in Vue

Inhaltsverzeichnis Vorwort 1. Was sind Mixins? 2....

Detaillierte Schritte zur Verwendung von AES.js in Vue

Verwendung der AES-Verschlüsselung Verschlüsselun...