我的程序让用户表明他是否是大四学生。我想生成一份报告,显示有多少用户是老年人,有多少用户不是每月和每年。
示例:
总用户数:20,000
2月登记的总年龄:1,000
本月注册的总年级人数:1,000:
...
2017年注册的总年龄:10,000
有没有其他替代方法可以实现这一点,而不必在接下来的几年中在我的数据库中创建一个表?
答案 0 :(得分:1)
这里有几个不同的分组。
获取总计数是最简单的,因为您只是得到整个表格的COUNT
:
SELECT
COUNT(`name`) AS `TotalRegistered`
FROM
`User`;
按月(和年)获得分组将是:
SELECT
YEAR(`dateregistered`) AS `Year`,
MONTH(`dateregistered`) AS `Month`,
COUNT(`name`) AS `NumberRegistered`
FROM
`User`
GROUP BY -- Since you want the values counted by year then month
YEAR(`dateregistered`) AS `Year`,
MONTH(`dateregistered`) AS `Month`
ORDER BY -- To order the actual results
YEAR(`dateregistered`) AS `Year`,
MONTH(`dateregistered`) AS `Month`;
顺便说一句,您应该拥有一个您似乎没有包含在此处的主键,并且您的dateregistered
应该是DATETIME
或TIMESTAMP
格式。