我的目标是每年获得数据库中的用户数量。 我把生日保存在时间戳中。 看完这个解决方案后 How to count 2 different data in one query
让我想知道,如果我所拥有的最年长的成员是120岁,我将不得不写出120个案例,每个案例将计入定义一年的两个timstamp之间吗?
这听起来有点奇怪,没有其他方法可以完成工作?
期望的结果:
1岁 - 0人
2岁 - 1人
20岁 - 314人
21岁 - 30人
25岁 - 47人
年龄120 - 1人
答案 0 :(得分:0)
您不希望每个年龄都有一个查询。假设您有一个可以计算年龄到最近年份的查询,那么您可以使用
进行计数SELECT (..expression..) AS "age", count(*) FROM USERS GROUP BY "age"
如果你正在寻找(..expression..)
来计算年龄,你可能想要接近
EXTRACT(year FROM CURRENT_DATE()) - EXTRACT(year FROM birthdate)
- IF(DATE_FORMAT(CURRENT_DATE(),"%c%d") < DATE_FORMAT(birthdate,"%c%d"),1,0)
但您可能更喜欢其他(可能更高效)版本。