Присоединение к таблице получает первые данные в первой таблице, если они дублируются - PullRequest
1 голос
/ 06 мая 2020

Привет, у меня table1 и table2. table1 - это таблица рабочего времени сотрудников, а table2 - групповой код сотрудника. На table1 у некоторых сотрудников есть двойное время, потому что они работают несколько раз, чтобы просто сэкономить свое время.

Table1

ID  EMPID       Time_IN
1   001     7:01 AM
2   004     7:04 AM
3   034     7:10 AM
4   034     7:11 AM
5   019     7:11 AM
6   019     7:12 AM

Table2

ID  empID   GroupName
1   001     AA
2   004     AB
3   034     AA
4   019     AA

результат

GroupName   CNT
AA          5
AB          1

Ожидаемый результат

GroupName   CNT
AA          3
AB          1

текущий запрос

Select b.GroupName, count(*) as cnt
from table1 a
inner join table2 b
on a.EMPID = b.empID    
Group by  b.GroupName

Как я могу получить ожидаемый результат выше?

Заранее спасибо .

Ответы [ 2 ]

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

вы можете использовать distinct count следующим образом:

select t2.groupname, count(distinct empid) as cnt
from table1 t1 join table2 t2
on t1.empid = t2.empid
group by t2.groupname
0 голосов
/ 06 мая 2020

join является излишним для вопроса, который вы задали:

select t2.GroupName, count(*) as cnt
from table2 t2
group by t2.GroupName;

Это намного эффективнее, чем join при использовании count(distinct). Вероятно, у вас действительно есть другой вопрос, который следует задавать как новый вопрос.

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