Дана таблица случайных чисел следующим образом:

схема таблицы чисел

  • 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;