Случай SQL, когда: несколько условий и методов для эффективного выполнения запросов

В SQL оператор CASE WHEN — это мощный инструмент, позволяющий выполнять условные операции внутри запроса. Он позволяет вам указывать несколько условий и выполнять различные действия на основе этих условий. В этой статье блога мы рассмотрим различные методы использования оператора CASE WHEN с примерами кода, чтобы продемонстрировать его универсальность и полезность в SQL-запросах.

Метод 1: базовый оператор CASE WHEN
Основной синтаксис оператора CASE WHEN следующий:

SELECT column_name,
  CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE result
  END
FROM table_name;

Вот пример:

SELECT product_name,
  CASE
    WHEN quantity > 10 THEN 'In stock'
    WHEN quantity > 0 THEN 'Limited stock'
    ELSE 'Out of stock'
  END AS stock_status
FROM products;

Метод 2: CASE WHEN с операторами сравнения
Вы можете использовать операторы сравнения в операторе CASE WHEN для оценки условий. Например:

SELECT customer_name,
  CASE
    WHEN total_orders > 1000 AND last_order_date > '2022-01-01' THEN 'VIP'
    WHEN total_orders > 500 AND last_order_date > '2022-01-01' THEN 'Regular'
    ELSE 'Standard'
  END AS customer_type
FROM customers;

Метод 3: CASE WHEN с подзапросами
Инструкцию CASE WHEN также можно комбинировать с подзапросами для выполнения более сложных условных операций. Вот пример:

SELECT order_id,
  CASE
    WHEN order_date > (SELECT MAX(order_date) FROM orders) THEN 'Latest'
    WHEN order_date < (SELECT MIN(order_date) FROM orders) THEN 'Old'
    ELSE 'Intermediate'
  END AS order_status
FROM orders;

Метод 4: CASE WHEN с несколькими столбцами
В некоторых случаях может потребоваться оценить условия на основе нескольких столбцов. Этого можно добиться, включив в запрос несколько операторов CASE WHEN. Вот пример:

SELECT product_name,
  CASE
    WHEN price < 50 AND quantity > 10 THEN 'Discounted'
    WHEN price > 100 AND quantity < 5 THEN 'Premium'
    ELSE 'Regular'
  END AS product_status,
  CASE
    WHEN category = 'Electronics' THEN 'Electronics'
    WHEN category = 'Clothing' THEN 'Fashion'
    ELSE 'Other'
  END AS product_category
FROM products;

Оператор SQL CASE WHEN обеспечивает гибкий и эффективный способ обработки нескольких условий в запросе. Используя различные методы, представленные в этой статье, вы можете настроить запросы в соответствии с конкретными требованиями и добиться точных результатов. Если вам нужно классифицировать данные, определить статусы или выполнить сложные оценки, оператор CASE WHEN окажется ценным инструментом в вашем наборе инструментов SQL.

Не забудьте адаптировать эти методы к вашей конкретной схеме базы данных и потребностям запросов. Удачных запросов!