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

如何合并两段相似SQL查询简化代码 可否用CASE实现条件计数

SQL合并实现方案

完全可以通过CASE语句实现两段查询的合并,不需要依赖COUNT_IF函数,最终统计结果和分开执行两段查询完全一致,还能减少表扫描次数提升执行效率。

实现逻辑

  • 保留两段查询共有的逻辑:table_1与table_2按order_id关联、筛选订单状态为PROCESSING/COMPLETED、按ID分组
  • 把两个查询不同的fullfilled_cd筛选值统一放到WHERE条件的IN列表中,不需要分两次过滤
  • 统计字段使用COUNT(DISTINCT + CASE)的写法:当行数据的fullfilled_cd匹配目标统计值时返回order_id,不匹配时返回NULL,COUNT会自动忽略NULL值,实现分类型的去重计数

合并后的SQL代码

SELECT 
    B.ID,
    COUNT(DISTINCT CASE WHEN B.fullfilled_cd = 'DELIVERY' THEN A.order_id END) AS delivery_order_count,
    COUNT(DISTINCT CASE WHEN B.fullfilled_cd = 'PURCHASE' THEN A.order_id END) AS purchase_order_count
FROM table_1 B
JOIN table_2 A
    ON A.order_id = B.order_id
WHERE 
    A.order_status IN ('PROCESSING', 'COMPLETED')
    AND B.fullfilled_cd IN ('DELIVERY', 'PURCHASE')
GROUP BY B.ID;

注:原两段示例SQL的WHERE子句开头存在多余的AND语法问题,上述合并代码已同步修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:01:02