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

SQL COUNT(DISTINCT)统计异常:职位头衔计数始终为1的问题

解决职位头衔统计结果始终为1的问题

问题原因

你的查询中GROUP BY子句包含了p.FirstName、p.LastName、e.JobTitle、e.HireDate,这意味着每个员工的信息(姓名、入职日期+职位)会被分成单独的分组,每个分组里只有一条数据,所以count(distinct e.JobTitle)必然返回1。

解决方案

根据你的需求不同,有两种处理方式:

1. 统计每个职位头衔的总人数

如果目标是知道每个职位对应多少员工,只需按JobTitle分组即可:

use [AdventureWorks2019]
select e.JobTitle, count(e.BusinessEntityID) 'CountOfEmployees'
from HumanResources.Employee e
left join person.Person p on e.BusinessEntityID = p.BusinessEntityID
group by e.JobTitle

2. 显示员工明细的同时展示对应职位的总人数

如果需要保留每个员工的姓名、入职日期等信息,同时在每行显示该职位的总人数,用窗口函数替代GROUP BY:

use [AdventureWorks2019]
select p.FirstName, p.LastName, e.JobTitle, e.HireDate,
    count(e.BusinessEntityID) over (partition by e.JobTitle) 'CountOfTitle'
from HumanResources.Employee e
left join person.Person p on e.BusinessEntityID = p.BusinessEntityID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:45:30