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

如何单次执行SQL同时获取多条件及仅t1.IsActive=1过滤的行数?

单次查询同时返回两个统计结果的SQL写法

你可以通过条件聚合函数在单次查询中同时计算两个统计值,无需重复执行多表连接操作。具体写法如下:

SELECT
    -- 原查询的总行数(满足所有过滤条件)
    COUNT(CASE 
        WHEN t1.EmpId LIKE '%Emp%' 
             AND t2.Company = 'A' 
             AND t3.St <> 'NY' 
        THEN 1 
    END) AS original_total,
    -- 仅t1.IsActive = 1时的总行数
    COUNT(*) AS active_only_total
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.empId = t2.empId
INNER JOIN Table3 t3 ON t2.empId = t3.empId
INNER JOIN Table4 t4 ON t3.empId = t4.empId
INNER JOIN Table5 t5 ON t4.empId = t5.empId
INNER JOIN Table6 t6 ON t5.empId = t6.empId
INNER JOIN Table7 t7 ON t6.empId = t7.empId
WHERE t1.IsActive = 1;

逻辑说明

  • WHERE t1.IsActive = 1 限定所有统计行都满足这个基础条件,保证active_only_total的准确性。
  • original_total 通过CASE语句判断是否满足原查询的其余过滤条件,只有符合条件的行才会被计数,结果和原查询的COUNT(*)完全一致。
  • 该写法仅执行一次多表连接,比分开执行两次查询更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:20:14