Как посчитать некоторое значение (доллары) (поле 2*), после разделения поля (поле 1*) на 2 отдельные категории?
PostgreSQL
Имею таблицу, в ней поля:
- категория фильма;
- цена аренды фильма, рубли;
Разбила поле 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 фильмы