Для каждого клиента мне нужно получить сотрудника с наибольшим количеством заказов.
Я бы сделал это с помощью функций агрегирования и окна:
select oc.*
from (select o.client, o.employeeid, count(*) as cnt,
rank() over (partition by o.client order by count(*) desc) as seqnum
from Orders o
group by o.client, o.employeeid
) oc
where seqnum = 1;
Обратите внимание, чтовам, похоже, не нужна таблица client
, потому что orders
, похоже, содержит и client
, и employeeid
.
Ваша версия отфильтровывает NULL
значения employeeid
.Вы также можете сделать это в подзапросе (хотя в вашем заявлении о проблеме ничего не говорится о таких значениях).