以表结构字段为id,birthday为例统计各年龄段人数:
SELECT
z.age AS NAME,
count( z.age ) AS
VALUE
FROM
(
SELECT
CASE WHEN p.age < 12 THEN '0~12'
WHEN p.age < 18 THEN '13~18'
WHEN p.age <= 30 THEN '19~30'
WHEN p.age <= 50 THEN'31~50'
ELSE '50+'
END AS age
FROM
(SELECT extract( YEAR FROM CURDATE( ) ) - IFNULL( FROM_UNIXTIME( IFNULL( birthday, 0 ), '%Y-%m-%d' ), CURDATE( ) ) AS age
FROM at_b ) p
) z
GROUP BY
z.age
执行结果如下: