java - 如何跟踪每月和每年的数据数量?

标签 java mysql sql

我的程序让用户表明他是否是高年级学生。我想生成一份报告,显示每月和每年有多少用户是老年人,有多少用户不是老年人。

示例:

用户总数:20,000

二月份注册的老年人总数:1,000

当月注册的老年人总数:1,000

...

2017年注册的老年人总数:10,000

是否有其他替代方法可以实现此目的,而无需在我的数据库中为接下来的每年创建一个表?

最佳答案

这里有几个不同的分组。

获取总计数是最简单的,因为您只需获取整个表的 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 应该是 DATETIMETIMESTAMP 格式。

关于java - 如何跟踪每月和每年的数据数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47054292/

相关文章:

java - RMI stub 和子类继承

java - 使用两个 Yugabyte 实例的多 dc 复制

java - 是否有必要从 json 对象中检索所有值?

php - 当用户点击显示更多按钮时显示更多帖子

mysql - 如何在不使用 View 的情况下搜索 MySQL 数据透视表

mysql - 如何编写一条sql语句来查找具有相同费用表的客户?

java - 如何获取 PDF 文件中链接的目标页面?

MySQL删除特定字符后的字符串的最后部分

PHP MySQLi 从外键获取列

sql - 合并多个表