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

技术求助:统计未持有特定资质的人员数量

解决统计无特定资质人员数量的问题

嘿,我完全懂你现在的困扰!你想要统计的是完全没有某一特定资质对应记录的人员总数,但用NOT关键字过滤时,得到的却是持有其他资质的人员记录——这确实不对,因为那些人只是没这个资质,但本身有其他资质的行存在,所以会被错误统计进去。

正确的解决方案有两种常用方式:

方法一:使用NOT EXISTS子查询(推荐,性能通常更好)

这种方式直接检查每个人员是否不存在目标资质的记录,逻辑清晰且高效:

SELECT COUNT(p.PersonnelID) AS Number
FROM dbo.Personnel p  -- 替换成你的人员主表名
WHERE NOT EXISTS (
    SELECT 1
    -- 替换成你的人员-资质关联表名
    FROM dbo.PersonnelQualifications pq
    WHERE pq.PersonnelID = p.PersonnelID
      -- 替换成你要排除的目标资质ID
      AND pq.QualificationID = 'TARGET_QUALIFICATION_ID'
)

方法二:使用左连接+NULL判断

通过左连接保留所有人员,再筛选出未匹配到目标资质的记录:

SELECT COUNT(DISTINCT p.PersonnelID) AS Number
FROM dbo.Personnel p  -- 人员主表
LEFT JOIN dbo.PersonnelQualifications pq  -- 人员-资质关联表
    ON p.PersonnelID = pq.PersonnelID
    AND pq.QualificationID = 'TARGET_QUALIFICATION_ID'  -- 目标资质ID
WHERE pq.PersonnelID IS NULL

注意:这里用DISTINCT是因为如果一个人持有多个其他资质,左连接后会生成多行相同人员的记录,去重后才能得到准确的人数。

为什么你的原方法会出错?

如果你的原查询是类似SELECT ... FROM 资质表 WHERE QualificationID != '目标ID',那它只会排除掉目标资质的行,但持有其他资质的人员仍然会出现在结果里——这和你要找的“完全没有该资质记录的人员”完全是两回事。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:08:31