Почему при выходе CASE видит только первую и последнюю группу, можно убрать 2 и 3 строку- ответ будет одинаковый
SELECT T4.product_group_name,COUNT(T4.product_group_name) AS count_category,
CASE
WHEN year(T1.birth_dt) <=2005 AND year(T1.birth_dt) >= 1993 THEN '18-30'
WHEN year(T1.birth_dt) < 1993 AND year(T1.birth_dt) >= 1978 THEN '35-40'
WHEN year(T1.birth_dt) < 1978 AND year(T1.birth_dt) >= 1963 THEN '45-60'
ELSE '60+'
END AS age
FROM customers AS T1
JOIN
orders AS T2
ON T1.customer_id = T2.customer_id
JOIN orders_product AS T3
ON T2.order_id = T3.order_id
Join products AS T4
ON T3.product_id = T4.product_id
Group by age, product_group_name
Order by age,count_category DESC
Источник: Stack Overflow на русском