聚合func+多个连接的异常行为

fkvaft9z  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(240)

这是我的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会修复这个问题吗?

qkf9rpyu

qkf9rpyu1#

你误会的原因 count(d.department_id) 因为有多个员工与同一个部门id相关,这就是为什么您得到相同数量的部门和员工。
当你使用 count(distinct d.department_id) ,那么 distinct 将只计算每个 department_id 一次而不是每次发现与 department_id .

相关问题