π» SQL: ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ CASE WHEN ELSE ELSE
SQL CASE WHEN ELSE
The CASE WHEN statement in SQL allows us to perform conditional checks and return different values based on the conditions. It can be used to implement if-else logic in SQL queries.
SELECT column1,
CASE
WHEN condition1 THEN value1
WHEN condition2 THEN value2
ELSE value3
END AS new_column
FROM table_name;
In the above example, we have a CASE statement that checks two conditions: condition1
and condition2
. If condition1
is true, it will return value1
; if condition2
is true, it will return value2
. If none of the conditions are true, it will return value3
. The new column created using AS is named "new_column".
Here is an example to illustrate the usage:
SELECT name,
age,
CASE
WHEN age < 18 THEN 'Minor'
WHEN age >= 18 AND age < 65 THEN 'Adult'
ELSE 'Senior'
END AS age_group
FROM users;
In the above example, the CASE statement is used to categorize users into different age groups based on their age. If the age is less than 18, it will return "Minor"; if the age is between 18 and 65, it will return "Adult"; otherwise, it will return "Senior".
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΡΠΈΠ²Π΅Ρ! Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ SQL CASE WHEN ELSE ELSE ΠΈ ΠΊΠ°ΠΊ Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ²ΠΎΠΈΡ Π·Π°ΠΏΡΠΎΡΠ°Ρ . ΠΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ Π²Π½ΡΡΡΠΈ SQL Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅!
ΠΡΠ½ΠΎΠ²Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ CASE WHEN ELSE ELSE
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ CASE WHEN ELSE ELSE ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ. ΠΠ½Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ if-else Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΡ ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ:
CASE
WHEN ΡΡΠ»ΠΎΠ²ΠΈΠ΅_1 THEN Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅_1
WHEN ΡΡΠ»ΠΎΠ²ΠΈΠ΅_2 THEN Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅_2
...
ELSE Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅_n
END;
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° CASE, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ WHEN. ΠΠ°ΠΆΠ΄ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ WHEN ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈΡΡΠΈΠ½Π½ΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΡΠ»ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠ»ΠΎΠ²ΠΈΠΉ WHEN Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΡΠΈΠ½Π½ΡΠΌ, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° ELSE.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ CASE WHEN ELSE ELSE
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ CASE WHEN ELSE ELSE Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ.
ΠΡΠΈΠΌΠ΅Ρ 1: ΠΡΠ΅Π½ΠΊΠΈ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ²
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° "students" Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ "name" ΠΈ "score". ΠΡ Ρ ΠΎΡΠΈΠΌ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΡΡΠ΄Π΅Π½ΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡ Π±Π°Π»Π»ΠΎΠ². Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ CASE WHEN ELSE ELSE ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
SELECT name,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END as grade
FROM students;
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ CASE WHEN ELSE ELSE Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π±Π°Π»Π»Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΡΠ΄Π΅Π½ΡΠ°. ΠΡΠ»ΠΈ Π±Π°Π»Π» ΡΡΡΠ΄Π΅Π½ΡΠ° Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π΅Π½ 90, ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Π΅ΠΌΡ ΠΎΡΠ΅Π½ΠΊΡ "A". ΠΡΠ»ΠΈ Π±Π°Π»Π» ΠΌΠ΅ΠΆΠ΄Ρ 80 ΠΈ 89, ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ ΠΎΡΠ΅Π½ΠΊΡ "B", ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. ΠΡΠ»ΠΈ Π±Π°Π»Π» ΡΡΡΠ΄Π΅Π½ΡΠ° Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π½ΠΈ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΠΌΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ ΠΎΡΠ΅Π½ΠΊΡ "F".
ΠΡΠΈΠΌΠ΅Ρ 2: ΠΠΎΠ΄ΡΡΠ΅Ρ ΡΠΊΠΈΠ΄ΠΊΠΈ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° "orders" Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ "order_id" ΠΈ "total_amount". ΠΡ Ρ ΠΎΡΠΈΠΌ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ ΡΠΊΠΈΠ΄ΠΊΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ. ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ CASE WHEN ELSE ELSE ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π² ΡΡΠΎΠΌ:
SELECT order_id,
total_amount,
CASE
WHEN total_amount >= 1000 THEN total_amount * 0.1
WHEN total_amount >= 500 THEN total_amount * 0.05
ELSE 0
END as discount
FROM orders;
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ CASE WHEN ELSE ELSE Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π°ΠΊΠ°Π·Π°. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π·Π°ΠΊΠ°Π·Π° Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½Π° 1000, ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΊΠΈΠ΄ΠΊΡ Π² 10% ΠΊ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΌΠΌΠ΅. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ°Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π·Π°ΠΊΠ°Π·Π° ΠΌΠ΅ΠΆΠ΄Ρ 500 ΠΈ 999, ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΊΠΈΠ΄ΠΊΡ Π² 5%. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠΊΠΈΠ΄ΠΊΡ Π² 0%.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ SQL CASE WHEN ELSE ELSE. Π’Π΅ΠΏΠ΅ΡΡ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ»ΠΎΠ²ΠΈΠΉ. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ WHEN ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ELSE, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠΊΡΡΠ²Π°ΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ WHEN.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°ΡΠΈ Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ SQL!