SELECT
t.age AS userAge,
t.num AS num
FROM
(SELECT
CASE
WHEN u.age >= 18 AND u.age < 25 THEN '[18,24]'
WHEN u.age >= 25 ND u.age < 30 THEN '[25,29]'
WHEN u.age >= 30 AND u.age < 35 THEN '[30,34]'
WHEN u.age >= 35 AND u.age < 40 THEN '[35,39]'
WHEN u.age >= 40 AND u.age < 45 THEN '[40,44]'
WHEN u.age >= 45 AND u.age < 50 THEN '[45,49]'
WHEN u.age >= 50 THEN '50+'
ELSE '未知'
END AS age,
COUNT(1) AS num
FROM
(SELECT
TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM
`user_info`) u
GROUP BY
CASE
WHEN u.age >= 18 AND u.age < 25 THEN '[18,24]'
WHEN u.age >= 25 ND u.age < 30 THEN '[25,29]'
WHEN u.age >= 30 AND u.age < 35 THEN '[30,34]'
WHEN u.age >= 35 AND u.age < 40 THEN '[35,39]'
WHEN u.age >= 40 AND u.age < 45 THEN '[40,44]'
WHEN u.age >= 45 AND u.age < 50 THEN '[45,49]'
WHEN u.age >= 50 THEN '50+'
ELSE '未知'
END) t
ORDER BY t.num DESC