PostgreSQL CASE – руководство и примеры использования
PostgreSQL предоставляет оператор CASE, который позволяет выполнять условные операции внутри запроса. Оператор CASE позволяет легко изменять результат запроса в зависимости от различных условий.
Синтаксис оператора CASE в PostgreSQL выглядит следующим образом:
CASE
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
...
WHEN condition_n THEN result_n
ELSE result
END
В этом выражении "condition_1", "condition_2", и так далее - это условия, которые нужно проверить, а "result_1", "result_2" и так далее - это результаты, которые нужно вернуть, если условия соответствуют.
Примеры кода на основе вопроса:
Пример 1: Использование оператора CASE для создания нового столбца
SELECT name,
CASE
WHEN age < 18 THEN 'Молодой'
WHEN age >= 18 AND age < 60 THEN 'Взрослый'
ELSE 'Пожилой'
END AS category
FROM users;
В этом примере случаи (conditions) сравнивают возраст (age) каждого пользователя и возвращают категорию в соответствии с его возрастом. Затем создается новый столбец category, который содержит категорию каждого пользователя.
Пример 2: Использование оператора CASE с агрегатными функциями
SELECT city,
COUNT(*),
CASE
WHEN COUNT(*) > 1000 THEN 'Много пользователей'
WHEN COUNT(*) > 100 AND COUNT(*) <= 1000 THEN 'Среднее количество пользователей'
ELSE 'Мало пользователей'
END AS user_count_category
FROM users
GROUP BY city;
В этом примере мы вычисляем общее количество пользователей в каждом городе, используя агрегатную функцию COUNT(*), а затем сравниваем это значение с помощью оператора CASE. Результирующий столбец user_count_category будет содержать категорию количества пользователей в каждом городе.
Пример 3: Использование оператора CASE в предложении ORDER BY
SELECT name, age
FROM users
ORDER BY
CASE WHEN age < 18 THEN age END DESC,
CASE WHEN age >= 18 AND age < 60 THEN age END ASC,
CASE WHEN age >= 60 THEN age END DESC;
В этом примере мы сортируем пользователей по возрасту с помощью оператора CASE. Вначале сортируются пользователи с возрастом меньше 18 лет по убыванию, затем пользователи с возрастом от 18 до 60 лет по возрастанию и, наконец, пользователи с возрастом 60 лет и старше по убыванию. Оператор CASE здесь используется в предложении ORDER BY для определения порядка сортировки.
В заключение, оператор CASE в PostgreSQL очень мощный инструмент для выполнения условных операций внутри запроса. Он позволяет легко изменять результаты запроса в зависимости от различных условий и может быть использован в различных сценариях для обработки данных в более гибком и удобном формате.