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

单个SQL查询统计双日期字段:总案例数与完成数异常排查

问题原因

你当前的SQL里,WHERE YEAR(tbl_lead.CompDate) = '2023'这个条件直接把结果集过滤成仅2023年完成的案例,所以COUNT(*)统计的就是这些已完成的案例数,自然和Completed列的数值完全一致,偏离了你要统计「2023年创建的总案例数 + 其中2023年完成的数量」的需求。

修正后的SQL

假设你的案例创建日期字段名为CreateDate(如果实际字段名不同,请替换成真实名称),修正后的查询语句如下:

SELECT 
  COUNT(*) AS Cases,
  COUNT(IF(YEAR(tbl_lead.CompDate) = 2023, 1, NULL)) AS Completed,
  tbl_lead.LeadSource
FROM tbl_lead
WHERE YEAR(tbl_lead.CreateDate) = 2023  -- 筛选2023年创建的案例
GROUP BY tbl_lead.LeadSource

也可以用SUM+CASE的写法,逻辑完全一致,部分数据库对这种写法兼容性更好:

SELECT 
  COUNT(*) AS Cases,
  SUM(CASE WHEN YEAR(tbl_lead.CompDate) = 2023 THEN 1 ELSE 0 END) AS Completed,
  tbl_lead.LeadSource
FROM tbl_lead
WHERE YEAR(tbl_lead.CreateDate) = 2023
GROUP BY tbl_lead.LeadSource
逻辑说明
  • WHERE YEAR(CreateDate) = 2023:限定统计范围为2023年创建的所有案例,这是总案例数的统计基础
  • COUNT(*):统计每个LeadSource分组下,2023年创建的总案例数
  • COUNT(IF(...))/SUM(CASE...):在总案例中,筛选出完成年份为2023的记录并统计数量,得到该分组下2023年完成的案例数

这样执行后就能得到你期望的输出结果:总案例数大于等于完成案例数,符合业务逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 04:12:03