You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按月份拆分年度文件统计的SQL查询优化求助

按月份统计各类文件接收总量的正确SQL方案

我们需要统计2022年每月各类文件的接收总量,原查询仅能返回全年各类型的累计总量,之前尝试的查询因分组逻辑错误,导致按天统计而非按月。

错误原因

之前的查询中group by type, batch_date是按具体日期分组,因此会把每天的数据单独拆分统计,无法合并成月度总量;同时where子句里的month = 1'1属于语法错误。

正确查询语句

要实现按月统计,需将分组字段改为type和MONTH(batch_date),为避免跨年度月份混淆(即使本次限定2022年,加上年份也更严谨),可补充YEAR(batch_date):

SELECT 
  type AS UC_Record_Type,
  COUNT(type) AS total_records,
  MONTH(batch_date) AS month,
  YEAR(batch_date) AS year -- 可选字段,明确统计年份
FROM hbucdsnotification
WHERE batch_date > '31.12.2021'
  AND batch_date < '01.01.2023'
GROUP BY type, MONTH(batch_date), YEAR(batch_date) -- 按类型+月份+年份分组
ORDER BY month, type; -- 先按月份排序,再按文件类型排序

查询结果示例

执行后会得到符合预期的月度统计结果:

UC_Record_Type  total_records  month  year
new claims      634            1      2022
changes         3898           1      2022
termination     200            1      2022
new claims      580            2      2022
changes         3670           2      2022
termination     185            2      2022

扩展:同时统计自动化处理总量

如果需要同步统计每月各类文件的自动化处理总量,假设表中有标记处理状态的字段(比如is_processed,值为1表示已完成自动化处理),可通过条件统计实现:

SELECT 
  type AS UC_Record_Type,
  COUNT(type) AS total_records,
  COUNT(CASE WHEN is_processed = 1 THEN 1 END) AS processed_total,
  MONTH(batch_date) AS month,
  YEAR(batch_date) AS year
FROM hbucdsnotification
WHERE batch_date > '31.12.2021'
  AND batch_date < '01.01.2023'
GROUP BY type, MONTH(batch_date), YEAR(batch_date)
ORDER BY month, type;

内容的提问来源于stack exchange,提问作者Carl Butterworth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:45:13