Используйте несколько таблиц в подзапросах - PullRequest
0 голосов
/ 30 ноября 2018

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

Количество задач в задаче, и сотрудники связаны с этой задачей employee_id.

SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, 
COUNT(E.TASK_ID)NUMBER_OF_TASKS
 FROM EMPLOYEE E, TASK T
WHERE E.EMPLOYEE_ID = T.EMPLOYEE_ID
GROUP BY E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME;

1 Ответ

0 голосов
/ 30 ноября 2018

Вы можете использовать оконные функции.Я бы написал так:

SELECT E.EMPLOYEE_ID, E.FIRST_NAME, E.LAST_NAME, T.NUMBER_OF_TASKS
FROM EMPLOYEE E JOIN
     (SELECT T.EMPLOYEE_ID, COUNT(*) as NUMBER_OF_TASKS,
             MAX(COUNT(*)) OVER () as MAX_NUMBER_OF_TASKS
      FROM TASK T
      GROUP BY T.EMPLOYEE_ID
     ) T
     ON E.EMPLOYEE_ID = T.EMPLOYEE_ID
WHERE t.NUMBER_OF_TASKS = t.MAX_NUMBER_OF_TASKS;

О, также обратите внимание на использование правильного, явного, стандартного JOIN синтаксиса.

...