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

Java 如何跟踪每月和每年的数据数量?,java,mysql,sql,Java,Mysql,Sql,我的程序让用户指出他是否是高年级学生。我想生成一个报告,显示每月和每年有多少用户是老年人,有多少不是老年人 例如: 用户总数:20000 2月份登记的老年人总数:1000人 年月注册的老年人总数:1000 2017年注册老年人总数:10000人 是否有其他方法可以实现这一点,而无需在我的数据库中为接下来的每一年创建一个表?这里有几个不同的分组 获取总计数是最简单的,因为您只需获取整个表的计数: SELECT COUNT(`name`) AS `TotalRegistered` FRO

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

例如:

用户总数:20000

2月份登记的老年人总数:1000人

年月注册的老年人总数:1000

2017年注册老年人总数:10000人


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

这里有几个不同的分组

获取总计数是最简单的,因为您只需获取整个表的计数:

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格式。

当然有。但是你的桌子看起来像什么?你试过什么?Google for SQL GROUP BY.my表在摘要中类似这样:用户名varchar、高级布尔值、青年布尔值、日托布尔值、dateregistered varcharI现在可能有了一个想法。谢谢大家!@JBNizet