php - 从日期字段按年龄分组

标签 php mysql

我有一个 DoB 字段。我想根据年龄将所有用户分类/分组到这些组中:

  1. <20
  2. 20-25
  3. 25-30
  4. 30-35
  5. 35-40
  6. 40-50
  7. >50

最佳答案

有几种方法可以做到这一点。如果你没有很多记录,你可以做类似的事情

select floor((datediff(now(),DOB_at)/365)/5) as year_group, count(*) 
   from users 
   group by floor((datediff(now(),DOB)/365)/5)

必须对此进行调整,以将 20 岁以下或 50 岁以上的 DOB 分组。

稍微好一点的方法是使用您的组查找表,它有两列,year_diff 和 group_name。

 year_diff group_name
 ....values.....
 18        '<20'
 19        '<20'
 20        '20-25'
 21        '20-25'
 22        '20-25'
 23        '20-25'
 24        '20-25'
 25        '20-25'
 26        '26-30'
 ....values.....

您的查询将是

select dob_lookup.group_name, count(*) 
   from users 
      join dob_lookup on floor((datediff(now(),users.DOB)/365)/5) = dob_lookup.year_diff
   group by dob_lookup.group_name

关于php - 从日期字段按年龄分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6806761/

相关文章:

php - 尝试注册示例用户时出现 pdo 注册页面错误

php - SQLSTATE[23000] : Integrity constraint violation: 1052 Column 'NRP' in where clause is ambiguous

php使用foreach将值插入数组数组

php - 在mysql中选择关联数组

php - 来自 MySQL 的具有最新和唯一值的 HTML 表

PHP MySQL删除行不起作用

mysql - SQL 添加外键到现有表

php - 我想知道为什么不会生成 $Articles

php - Laravel 数据库外观内存使用情况

php - 在服务器上加载扩展 gRPC 但 extension_loaded ('grpc' ) 在 PHP 中运行时返回 false