MySQL中按年龄范围分组
我们在表中有一个出生日期字段(类型date)和用户id,我们希望根据出生日期字段按年龄获得用户组的计数 例如,运行后,我们会得到以下记录MySQL中按年龄范围分组,mysql,sql,Mysql,Sql,我们在表中有一个出生日期字段(类型date)和用户id,我们希望根据出生日期字段按年龄获得用户组的计数 例如,运行后,我们会得到以下记录 Age Total_Users 1-20 50 20-30 100 30-50 500 50-100 600 我们如何编写这种类型的查询?请建议。目前我是 通过php代码进行管理,但由于记录太多,需要花费太多时间 谢谢可能是下面这样的查询就可以了 SELECT CASE WHEN (DATE_FORMAT(NOW(), '%Y') -
Age Total_Users
1-20 50
20-30 100
30-50 500
50-100 600
我们如何编写这种类型的查询?请建议。目前我是
通过php代码进行管理,但由于记录太多,需要花费太多时间
谢谢可能是下面这样的查询就可以了
SELECT
CASE WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birth_date, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birth_date, '00-%m-%d'))) <= 20 THEN '1-20'
WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birth_date, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birth_date, '00-%m-%d'))) <= 30 THEN '20-30'
WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birth_date, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birth_date, '00-%m-%d'))) <= 50 THEN '30-50'
WHEN (DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birth_date, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birth_date, '00-%m-%d'))) <= 50 THEN '50-100' END AS age,
COUNT(*) total
FROM dob_table
GROUP BY age;
输出:
| id | birth_date |
|----|----------------------------|
| 1 | February, 01 2014 00:00:00 |
| 2 | February, 01 2014 00:00:00 |
| 3 | February, 01 2014 00:00:00 |
| 4 | February, 01 2010 00:00:00 |
| 5 | February, 27 1989 00:00:00 |
| 6 | February, 27 1989 00:00:00 |
| 7 | February, 27 1989 00:00:00 |
| 8 | February, 27 1989 00:00:00 |
| 9 | February, 27 1989 00:00:00 |
age total
1-20 4
20-30 5
您的原始数据看起来如何?请发布一些示例数据查看此问题的正确答案,而不是已接受的答案。然后在计算的年龄上使用GROUP BY。您好,您的查询对我有效,但唯一的问题是,如果我们通过0,10之类的限制,它不适用于限制。您希望应用的
限制0,10
?