这是我的rdb结构。
我试着统计与一个地点相关的部门和员工的数量。
select street_address, count(distinct(d.department_id)), count(emp.employee_id)
from locations loc
inner join departments d
on d.location_id = loc.location_id
inner join employees emp
on emp.department_id =d.department_id
group by street_address
查询执行结果:
但如果不使用distinct来计算d.U id,则会产生错误的结果。
有人能解释一下查询执行过程中发生了什么,以及为什么distinct会修复这个问题吗?
1条答案
按热度按时间qkf9rpyu1#
你误会的原因
count(d.department_id)
因为有多个员工与同一个部门id相关,这就是为什么您得到相同数量的部门和员工。当你使用
count(distinct d.department_id)
,那么distinct
将只计算每个department_id
一次而不是每次发现与department_id
.