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