【问题标题】:Get all ages count on a table让所有年龄段的人都算在一张桌子上
【发布时间】:2015-07-22 12:30:19
【问题描述】:

我的目标是让我的数据库每年获得多少用户。 我将生日保存在时间戳中。 阅读此解决方案后 How to count 2 different data in one query

让我想知道,如果我拥有的最年长的成员是 120 岁,我是否必须编写 120 个案例,每个案例都算作“介于”定义一年的两个时间戳之间?

这听起来有点奇怪,没有其他方法可以完成工作吗?

想要的结果:

年龄 1 - 0 人

年龄 2 - 1 人

.

.

.

年龄 20 - 314 人

年龄 21 - 30 人

.

.

.

年龄 25 - 47 人

.

.

年龄 120 - 1 人

【问题讨论】:

  • 为什么不直接使用group by
  • 究竟如何?我仍然需要按 120 次分组,每次为每个年龄之间的时间戳?还是我错过了什么?
  • 你错过了在计算字段上进行分组(年龄)

标签: mysql count timestamp


【解决方案1】:

您不希望每个年龄都有一个查询。假设您有一个可以计算最近年份的年龄的查询,那么您可以使用

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)

但您可能更喜欢其他(可能更高效)版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多