Розуміння операторів SQL CASE: Практичні приклади

pic

SQL — це потужна мова для управління і запитів до баз даних. І коли мова йде про "switch case", ми знайомимося з цим під час навчання будь-якій популярній мові програмування. В моєму випадку я вперше дізнався про це, вивчаючи Java. Оператор CASE — це одна з найкорисніших функцій, яка дозволяє виконувати умовну логіку безпосередньо в SQL-запитах. Це може бути особливо корисно, коли потрібно категоризувати дані або створити нові поля на основі існуючих значень.

Що таке оператор CASE?

Оператор CASE в SQL схожий на оператор switch в мовах програмування. Він оцінює список умов і повертає певне значення, коли виконується перша умова. Якщо жодна з умов не виконується, можна повернути значення за замовчуванням.

Основний синтаксис оператора CASE виглядає так:

CASE   
 WHEN умова1 THEN результат1   
 WHEN умова2 THEN результат2   
 ...   
 ELSE результат_за_замовчуванням   
END

Приклад ситуації: Розподіл співробітників за рівнями зарплати

Уявімо ситуацію, де у нас є таблиця employees, яка містить інформацію про співробітників, включаючи їхні ім'я та зарплату. Ми хочемо категоризувати співробітників за різними рівнями зарплати, залежно від розміру їхньої заробітної плати.

Приклад даних

Ось як може виглядати таблиця employees:

pic

Таблиця ‘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: Це вказує таблицю, з якої вибирається дані.

Результат виконання запиту

Коли ви виконаєте вищенаведений запит, ви отримаєте такий результат:

pic

Результат 1

Приклад ситуації 2: Рівні складності рецептів

Тепер розглянемо ще один приклад, використовуючи таблицю recipes, яку я знайшов в цьому курсі на codecademy. Ця таблиця містить інформацію про різні рецепти, включаючи їхні назву та кількість інгредієнтів (num_of_ingredients).
Ми хочемо категоризувати кожен рецепт за рівнем складності.

Приклад даних

Ось приклад того, як може виглядати таблиця recipes:

pic

Таблиця ‘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: Це вказує таблицю, з якої вибираються дані.

Результат виконання запиту

Коли ви виконаєте вищенаведений запит, ви отримаєте такий результат:

pic

Результат 2

Висновки

Оператор CASE — це потужний інструмент у SQL, який дозволяє вам реалізувати умовну логіку безпосередньо у ваших запитах. Категоризуючи дані за певними умовами, ви можете отримати глибші інсайти та зробити ваш аналіз даних більш змістовним.

Незалежно від того, чи працюєте ви з даними про співробітників, продажами чи будь-яким іншим набором даних, освоєння оператора CASE підвищить ваші навички в SQL та поліпшить вашу здатність ефективно аналізувати дані.

Не соромтеся експериментувати з операторами CASE у ваших SQL-запитах і дивіться, як вони допомагають отримати цінні інсайти з ваших даних!

Перекладено з: Understanding SQL CASE Statements: With Practical Examples

Leave a Reply

Your email address will not be published. Required fields are marked *