Как посчитать некоторое значение (доллары) (поле 2*), после разделения поля (поле 1*) на 2 отдельные категории?

PostgreSQL

Имею таблицу, в ней поля:

  1. категория фильма;
  2. цена аренды фильма, рубли;

Разбила поле 1 на 2 подкатегории: для взрослых, для всех методом CASE и мне теперь нужно посчитать, сколько составляла суммарная цена аренды подкатегорий "для взрослых" и "для всех" с группировкой по новым двум подкатегориям.

SELECT
      CASE
          WHEN 'категория' LIKE '%такая%' THEN 'для взрослых'
          WHEN 'категория' LIKE '%такая%' THEN 'для всех'
      END AS new_category,
      SUM(цена аренды фильма)
FROM фильмы
GROUP BY new_category;

Должно выйти что-то типа так:


  • для взрослых: 100000 рублей (общая сумма аренды фильмов)
  • для всех: 120000 рублей (общая сумма аренды фильмов)

А тренажёр мне пишет, что не совпадает с ожидаемым значением. Верно ли, что я что-то делаю неправильно и пишу неправильный запрос? Если вопрос не корректный, удалю. Спасибо.


Ответы (1 шт):

Автор решения: SwaD

Попробуйте сгруппировать данные по вашему условию:

SELECT
      CASE
          WHEN 'категория' LIKE '%такая%' THEN 'для взрослых'
          WHEN 'категория' LIKE '%такая%' THEN 'для всех'
      END AS new_category,
      SUM(цена аренды фильма)
FROM фильмы
GROUP BY CASE
          WHEN 'категория' LIKE '%такая%' THEN 'для взрослых'
          WHEN 'категория' LIKE '%такая%' THEN 'для всех'
      END;

Или можно вывести данные в одну строку

SELECT
      sum(CASE
          WHEN 'категория' LIKE '%такая%' THEN фильмы.цена_аренды
      END)  'для взрослых',
      sum(CASE
          WHEN 'категория' LIKE '%такая%' THEN фильмы.цена_аренды
      END)  'для всех'
FROM фильмы
→ Ссылка