Дана таблица случайных чисел следующим образом:
схема таблицы чисел
- id
- номер 1
- номер 2
Ваша задача — вернуть таблицу с аналогичной структурой и заголовками, где, если сумма столбца нечетная, столбец показывает минимальное значение для этого столбца, а когда сумма четная, показывает максимальное значение. Вы должны использовать оператор case.
схема выходной таблицы
- номер 1
- номер 2
Решение
Выражение PostgreSQL CASE
совпадает с оператором IF/ELSE
в других языках программирования. Это позволяет вам добавить логику if-else к запросу, чтобы сформировать мощный запрос.
Поскольку CASE
является выражением, вы можете использовать его в любых местах, где может использоваться выражение, например, в предложениях SELECT
, WHERE
, GROUP BY
и HAVING
.
SELECT
(CASE mod(sum(number1), 2)
WHEN 1
THEN min(number1)
ELSE max(number1)
END) AS number1,
(CASE mod(sum(number2), 2)
WHEN 1
THEN min(number2)
ELSE max(number2)
END) AS number2
FROM numbers;