SQL — це потужна мова для управління і запитів до баз даних. І коли мова йде про "switch case", ми знайомимося з цим під час навчання будь-якій популярній мові програмування. В моєму випадку я вперше дізнався про це, вивчаючи Java. Оператор CASE — це одна з найкорисніших функцій, яка дозволяє виконувати умовну логіку безпосередньо в SQL-запитах. Це може бути особливо корисно, коли потрібно категоризувати дані або створити нові поля на основі існуючих значень.
Що таке оператор CASE?
Оператор CASE в SQL схожий на оператор switch в мовах програмування. Він оцінює список умов і повертає певне значення, коли виконується перша умова. Якщо жодна з умов не виконується, можна повернути значення за замовчуванням.
Основний синтаксис оператора CASE виглядає так:
CASE
WHEN умова1 THEN результат1
WHEN умова2 THEN результат2
...
ELSE результат_за_замовчуванням
END
Приклад ситуації: Розподіл співробітників за рівнями зарплати
Уявімо ситуацію, де у нас є таблиця employees, яка містить інформацію про співробітників, включаючи їхні ім'я та зарплату. Ми хочемо категоризувати співробітників за різними рівнями зарплати, залежно від розміру їхньої заробітної плати.
Приклад даних
Ось як може виглядати таблиця employees:
Таблиця ‘employees’
SQL запит з оператором CASE
Ми можемо використати оператор CASE для категоризації співробітників за рівнями зарплати:
SELECT ім'я,
CASE
WHEN зарплата < 40000 THEN 'Низька'
WHEN зарплата >= 40000 AND зарплата < 80000 THEN 'Середня'
WHEN зарплата >= 80000 AND зарплата < 100000 THEN 'Висока'
ELSE 'Дуже висока'
END AS рівень_зарплати
FROM employees;
Пояснення запиту
- SELECT ім'я: Це вибирає ім'я співробітника.
- CASE: Це починає умовну логіку.
- WHEN зарплата < 40000 THEN ‘Низька’: Якщо зарплата менше 40 000, присвоюється рівень «Низька».
- WHEN зарплата >= 40000 AND зарплата < 80000 THEN ‘Середня’: Якщо зарплата між 40 000 і 80 000, присвоюється «Середня».
- WHEN зарплата >= 80000 AND зарплата < 100000 THEN ‘Висока’: Якщо зарплата між 80 000 і 100 000, присвоюється «Висока».
- ELSE ‘Дуже висока’: Якщо жодна з умов не виконана, присвоюється «Дуже висока».
- END AS рівеньзарплати: Це називає нову колонку як `рівеньзарплати`.
- FROM employees: Це вказує таблицю, з якої вибирається дані.
Результат виконання запиту
Коли ви виконаєте вищенаведений запит, ви отримаєте такий результат:
Результат 1
Приклад ситуації 2: Рівні складності рецептів
Тепер розглянемо ще один приклад, використовуючи таблицю recipes, яку я знайшов в цьому курсі на codecademy. Ця таблиця містить інформацію про різні рецепти, включаючи їхні назву та кількість інгредієнтів (num_of_ingredients).
Ми хочемо категоризувати кожен рецепт за рівнем складності.
Приклад даних
Ось приклад того, як може виглядати таблиця recipes:
Таблиця ‘recipes’
SQL запит з оператором CASE
Ми можемо використати оператор CASE, щоб категоризувати ці рецепти за рівнями складності:
SELECT name,
CASE
WHEN num_of_ingredients < 3 THEN 'Початківець'
WHEN num_of_ingredients < 5 THEN 'Середній'
WHEN num_of_ingredients < 8 THEN 'Складний'
ELSE 'Шеф-кухар з зіркою Мішлен'
END AS difficulty
FROM recipes;
Пояснення запиту
- SELECT name: Це вибирає
nameрецепту. - CASE: Це починає умовну логіку.
- WHEN numofingredients < 3 THEN ‘Початківець’: Якщо кількість інгредієнтів менше 3, присвоюється рівень «Початківець».
- WHEN numofingredients < 5 THEN ‘Середній’: Якщо кількість інгредієнтів від 3 до 5, присвоюється «Середній».
- WHEN numofingredients < 8 THEN ‘Складний’: Якщо кількість інгредієнтів від 5 до 8, присвоюється «Складний».
- ELSE ‘Шеф-кухар з зіркою Мішлен’: Якщо жодна з умов не виконана, присвоюється «Шеф-кухар з зіркою Мішлен».
- END AS difficulty: Це дає назву новій колонці —
difficulty. - FROM recipes: Це вказує таблицю, з якої вибираються дані.
Результат виконання запиту
Коли ви виконаєте вищенаведений запит, ви отримаєте такий результат:
Результат 2
Висновки
Оператор CASE — це потужний інструмент у SQL, який дозволяє вам реалізувати умовну логіку безпосередньо у ваших запитах. Категоризуючи дані за певними умовами, ви можете отримати глибші інсайти та зробити ваш аналіз даних більш змістовним.
Незалежно від того, чи працюєте ви з даними про співробітників, продажами чи будь-яким іншим набором даних, освоєння оператора CASE підвищить ваші навички в SQL та поліпшить вашу здатність ефективно аналізувати дані.
Не соромтеся експериментувати з операторами CASE у ваших SQL-запитах і дивіться, як вони допомагають отримати цінні інсайти з ваших даних!
Перекладено з: Understanding SQL CASE Statements: With Practical Examples