php - 从生日日期列表到每个年龄段的总用户数组

标签 php mysql sql

我想了解实现此目的的最有效方法:

我有一个 MySQL 表,其中包含我的用户信息,包括生日 (YYYY/MM/DD)。我的目标是检索一个数组 (php),其中包含从 10 岁到 60 岁的每个年龄段的用户总数。我可以只查询所有用户,将生日传递给我编写的生日到年龄 php 函数,然后用总计填充一个数组。但我想知道是否有一种方法可以构建一个 sql 查询来为我完成这项工作?

最佳答案

您应该能够对行进行分组:

SELECT
    FLOOR(DATEDIFF(NOW(), `birthday`)/365) AS 'Age',
    COUNT(*)
FROM `users`
WHERE FLOOR(DATEDIFF(NOW(), `birthday`)/365) BETWEEN 10 AND 60
AND `id` IN (1, 3, 5, 12, 29)
GROUP BY FLOOR(DATEDIFF(NOW(), `birthday`)/365)
ORDER BY FLOOR(DATEDIFF(NOW(), `birthday`)/365) ASC

结果不会包含没有用户的年龄,但我不确定您为什么需要它。

更新 - 添加了一个 id 过滤器 - 修复了日期计算(糟糕!) - 命名新列

关于php - 从生日日期列表到每个年龄段的总用户数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419901/

相关文章:

sql - 如何在 Snowflake 中将字符串拆分为字符?

mysql - 在MySQL中的查询中选择存储过程值

javascript - 想要从javascript文件调用php文件

php - 如何使用 php 管理特定的一个用户或 session 用户上传高达 1GB 的总数据(如 dropbox)?

mysql - 选择并计算列

MySQL 加载数据 Infile - 导致错误 1265 : Data Truncated 的空值

mysql按日期之间的距离排序

php - Laravel - 使用 Eloquent 在数据透视表上进行多对多

php - MySQL 5.6上的SQL请求错误

mysql - 如何在 PostgreSQL 中创建计算属性