Занятие 05. Условные конструкции: операторы CASE, IF
⚡ Кратко: суть темы
Занятие учит создавать новые столбцы на основе условий. Разбираем оператор CASE, псевдонимы AS, функцию IF в MySQL, математические операции, строковые функции и конкатенацию.
CASE WHEN ... THEN ... ELSE ... END— переносит ветвление в SQL.ASзадаёт понятное имя вычисляемому столбцу.IF(condition, true, false)— короткая альтернатива CASE, но только в MySQL.
Что запомнить: CASE — стандарт SQL и работает почти везде; IF — специфика MySQL.
Частая ошибка: забыть END в конце блока CASE.
💻 Примеры
CASE: категория цены
SELECT
product_name,
standard_cost,
CASE
WHEN standard_cost > 50 THEN 'Дорогой'
WHEN standard_cost > 20 THEN 'Средний'
ELSE 'Дешевый'
END AS price_category
FROM products;
CASE: скидка по региону
SELECT *,
CASE
WHEN state_province IN ('WA', 'CA') THEN 5
WHEN state_province IN ('ID', 'OR') THEN 7
WHEN state_province IN ('UT', 'NV') THEN 13
ELSE 0
END AS discount
FROM customers;
CASE: статус заказа
SELECT
id,
order_date,
shipped_date,
CASE
WHEN shipped_date IS NULL THEN 'Ожидание отправки'
WHEN shipped_date = order_date THEN 'Отправлено в день заказа'
ELSE 'Отправлено'
END AS order_status
FROM orders;
IF
SELECT
product_name,
IF(standard_cost > 20, 'Expensive', 'Affordable') AS price_category
FROM products;
Строковые функции
SELECT
company,
RIGHT(company, 2) AS short_name
FROM customers;
SELECT
business_phone,
SUBSTRING(business_phone, 6, 3) AS phone_code
FROM customers;
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM employees;
SELECT notes, COALESCE(notes, 'Not filled') AS notes_filled
FROM employees;