按年龄查找数据库中每个人的计数

时间:2019-05-19 15:06:52

标签: mysql

我有一个包含数千个成员记录的MySQL数据库。每个人都有一个生日,这是一个简单的字符串,例如“ 2005-11-01”(yyyy-mm-dd)

我想查询数据库并了解会员的年龄。我希望看到每个年龄段的数据库中有多少成员。所以我很喜欢这样的输出:

age         count
---         -----
18          619
19          1321
20          15112
etc.

我该怎么做? (我很想在MySQL中完成所有操作,但如果更容易,我们可以添加一些PHP,Perl或Python)

2 个答案:

答案 0 :(得分:2)

您应该使用

SELECT TIMESTAMPDIFF(YEAR, '2005-11-01', CURDATE()) AS age , count(*) 
FROM my_table 
group by age ;

SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age , count(*) 
FROM my_table 
group by age ;

答案 1 :(得分:1)

如果您还希望照顾leap年,请尝试以下操作:

SELECT 
YEAR(CURDATE())-YEAR(DOB) - (DATE_FORMAT(CURDATE(),'%M%D') < DATE_FORMAT(DOB,'%M%D')) `AGE`,
COUNT(*) `COUNT`
FROM YOURTABLE
GROUP BY AGE;