我想创建一些关于我的用户的统计信息。
我想根据他们的年龄间隔对他们进行分组,并根据他们的性别进行总结。所以最后我得到了一张这样的桌子:
age | male | female | total
0-18 | 2 | 1 | 3
18-25 | 3 | 4 | 7
25-100 | 13 | 25 | 38
total | 18 | 30 | 48
(顺便说一句。这些是示例间隔)
现在我通过对每一行运行这个查询来做到这一点:
SELECT
SUM(IF(gender = 'male', 1,0)) AS `male`,
SUM(IF(gender = 'female', 1,0)) AS `female`,
COUNT(gender) AS `total`
FROM `users`
WHERE
`birthday`
BETWEEN
DATE_SUB(CURDATE(), INTERVAL 25 YEAR)
AND
DATE_SUB(CURDATE(), INTERVAL 18 YEAR)
并通过我的 php 脚本总结结果以创建最后一行
我如何结合所有这些查询来提高性能,也许还可以通过 mysql 创建最后一行。
我想使用的间隔是:
0-18
18-25
25-31
31-36
36-41
41-46
46-51
51-56
56-61
61-100
编辑:这是一个带有一些示例数据的表的转储以对其进行测试http://pastebin.com/ytcuu2ge