А вы используете CASE? Иногда вы можете сократить свои запросы в несколько раз, используя его, но мы часто наблюдаем, что новички игнорируют использование этого оператора.
Например, была задача — вывести поле sum со знаком -, если type=1 и со знаком +, если type=0.
Пользователь предложил такое решение:
SELECT id, sum FROM transactions t
WHERE type = 0
UNION ALL
SELECT id, -sum FROM transactions t
WHERE type = 1
В целом, не так плохо. Но это всего лишь промежуточный запрос, задача была намного масштабней и таких конструкций в итоге было наворочено очень много.
А вот то же самое с CASE:
SELECT id,
CASE
WHEN type = 0
THEN sum
ELSE -sum
END
FROM transactions t
Согласитесь, это намного лаконичнее и понятнее! 👍
Более того, CASE можно использовать ещё много для чего. Например, чтобы сделать из «длинной» таблицы «широкую». Или для суммирования/подсчёта количества внутри агрегатных функций (да, CASE можно использовать внутри агрегатных функций!).
А еще, кстати, COALESCE — это просто «синтаксический сахар» и обёртка вокруг CASE.
Используя оператор CASE в SQL, вы можете легко выполнять различные условные операции и улучшать читаемость ваших запросов. Не игнорируйте этот мощный инструмент!
📊 Simulative