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

如何将两个统计不同条件案例数的SQL查询合并为单个查询

合并两个条件统计的SQL查询

你可以通过条件聚合的方式将两个查询合并为单条SQL,这样只需要扫描一次表,效率更高,逻辑也更清晰:

SELECT
  COUNT(DISTINCT CASE WHEN c.channel IS NOT NULL THEN c.caseid END) AS New_cases,
  COUNT(DISTINCT CASE WHEN c.channel IS NULL THEN c.caseid END) AS Old_cases
FROM caseinfo c
WHERE c.crtdate BETWEEN TO_DATE('2024/07/08') AND TO_DATE('2024/07/11');

逻辑说明:

  • 两个统计共用同一个WHERE条件(时间范围过滤),避免重复计算
  • CASE WHEN语句会根据channel的状态筛选对应的caseid:
    • 当channel IS NOT NULL时,返回对应的caseid,否则返回NULL
    • 当channel IS NULL时,返回对应的caseid,否则返回NULL
  • COUNT(DISTINCT ...)会自动忽略NULL值,因此只会统计符合条件的唯一caseid数量

注:部分数据库中UNIQUE和DISTINCT是同义词,这里用DISTINCT是更通用的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 06:41:03