如何使用SQL按日期汇总每日文档总数?附尝试代码
按日期汇总每日文档总数的正确SQL写法
你的核心问题有两个:
- 误用了聚合函数:你需要汇总的是文档数量的总和,而非记录条数,所以不能用
COUNT,应该用SUM - 分组逻辑与显示逻辑不一致:如果
DateReceived是带时分秒的日期时间类型,直接按原始字段分组会把同一天的不同时间记录分成不同组,但显示的却是同一天的日期,导致结果错误
针对你的示例表的直接解法
如果表结构和示例一致(日期字段为日期,文档数量字段为文档数量),直接按日期分组求和即可:
SELECT 日期, SUM(文档数量) AS 每日文档总数 FROM MyTable GROUP BY 日期
针对带时间的日期字段的解法
如果你的实际日期字段是DateReceived(包含时分秒的datetime类型),需要先将日期格式化到天,同时分组字段要和格式化后的日期保持一致:
SQL Server 写法
SELECT CAST(DateReceived AS DATE) AS 日期, SUM(文档数量) AS 每日文档总数 FROM MyTable GROUP BY CAST(DateReceived AS DATE)
MySQL 写法
SELECT DATE(DateReceived) AS 日期, SUM(文档数量) AS 每日文档总数 FROM MyTable GROUP BY DATE(DateReceived)
通用格式化写法
SELECT FORMAT(DateReceived, 'yyyy/MM/dd') AS 日期, SUM(文档数量) AS 每日文档总数 FROM MyTable GROUP BY FORMAT(DateReceived, 'yyyy/MM/dd')
结果验证
按上述写法执行后,针对你的示例表会得到如下正确结果:
| 日期 | 每日文档总数 |
|---|---|
| 2023/01/01 | 5 |
| 2023/01/02 | 3 |
| 2023/01/03 | 1 |
内容的提问来源于stack exchange,提问作者Dan Malengela
相关产品推荐
相关产品推荐

