Необычное поведение совокупного веселья c + несколько объединений - PullRequest
0 голосов
/ 27 мая 2020

Вот моя структура RDB.

enter image description here

Я пытаюсь подсчитать количество отделов и сотрудников, связанных с одним местоположением.

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

Результат выполнения запроса:

enter image description here

Но без использования independent для подсчета d. Department_id дает неверный результат. enter image description here

Может ли кто-нибудь объяснить, что происходит во время выполнения запроса и почему independent устраняет эту проблему?

1 Ответ

2 голосов
/ 27 мая 2020

Причина, по которой вы ошибаетесь при подсчете с помощью count(d.department_id), потому что есть несколько сотрудников, связанных с одним и тем же идентификатором отдела, и поэтому вы получаете одинаковое количество отдела и сотрудников.

при использовании count(distinct d.department_id) , то distinct будет считать каждый department_id только один раз вместо того, чтобы считать каждый раз, когда он находит сотрудника, связанного с department_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...