Я пытаюсь использовать Case when
инструкции для маркировки данных основаны на условиях. Затем мне нужно сгруппировать категории, чтобы я мог их подсчитать. Я не могу использовать временные таблицы для выполнения этой задачи.
SELECT player_name,
weight,
CASE WHEN weight > 250 THEN 'over 250'
WHEN weight > 200 AND weight <= 250 THEN '201-250'
WHEN weight > 175 AND weight <= 200 THEN '176-200'
ELSE '175 or under' END AS weight_group
FROM benn.college_football_players
Выход:
Over 250 10
201-250 50
176-200 3
и т.п.
Вы можете просто использовать одно и то же выражение case
в предложении group by
:
SELECT CASE WHEN weight > 250 THEN 'over 250'
WHEN weight > 200 AND weight <= 250 THEN '201-250'
WHEN weight > 175 AND weight <= 200 THEN '176-200'
ELSE '175 or under' END AS weight_group,
COUNT(*)
FROM benn.college_football_players
GROUP BY CASE WHEN weight > 250 THEN 'over 250'
WHEN weight > 200 AND weight <= 250 THEN '201-250'
WHEN weight > 175 AND weight <= 200 THEN '176-200'
ELSE '175 or under' END
GROUP BY 1
- означает столбец 1.)
вы можете использовать производную таблицу (подзапрос) для группы, например:
select t.weight_group, count(*) from (
SELECT player_name,
weight,
CASE WHEN weight > 250 THEN 'over 250'
WHEN weight > 200 AND weight <= 250 THEN '201-250'
WHEN weight > 175 AND weight <= 200 THEN '176-200'
ELSE '175 or under' END AS weight_group
FROM benn.college_football_players
) t
group by weight_group