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

如何编写SQL统计各公司已完成项目数(避免多余分组)

统计每家公司已完成项目数的正确SQL写法

方法1:条件聚合(推荐,兼容所有主流数据库)

直接在计数时添加状态判断,不需要把status加入分组:

SELECT 
    a.company_id,
    COUNT(CASE WHEN b.status = 'completed' THEN b.project_id END) AS completed_project_count
FROM a
LEFT JOIN b ON a.company_id = b.company_id
GROUP BY a.company_id

用LEFT JOIN是为了让没有任何项目的公司也能出现在结果里,完成数显示0;如果只需要有已完成项目的公司,换成JOIN即可。

方法2:关联子查询

把统计逻辑封装在子查询里,直接和公司表关联:

SELECT 
    a.company_id,
    COALESCE(
        (SELECT COUNT(project_id) 
         FROM b 
         WHERE b.company_id = a.company_id AND b.status = 'completed'),
        0
    ) AS completed_project_count
FROM a

COALESCE用来处理子查询返回NULL的情况,把它转成0,确保所有公司都有数值结果。

方法3:先过滤再关联

先从项目表中筛出已完成的记录,再和公司表关联统计:

SELECT 
    a.company_id,
    COUNT(b_filtered.project_id) AS completed_project_count
FROM a
JOIN (
    SELECT company_id, project_id 
    FROM b 
    WHERE status = 'completed'
) AS b_filtered ON a.company_id = b_filtered.company_id
GROUP BY a.company_id

这个写法适合只需要统计有已完成项目的公司场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:45:57