Разбейте свою проблему на шаги.
Во-первых, вам нужно знать, сколько сотрудников назначено для каждого проекта.Таким образом, вы будете знать, у кого из них больше всего сотрудников.Чтобы сделать это, используйте COUNT
с GROUP BY
.
SELECT
p.PNO, COUNT(p.EID) AS numOfEmployee
FROM
Pro_works_on AS p
GROUP BY
p.PNO
Далее, пусть ваш запрос разместит ваши результаты в нужном вам порядке, используя ORDER BY
.Вы хотите, чтобы на первом месте был проект с наибольшим количеством сотрудников, поэтому поместите их в конечный порядок DESC
.
SELECT
p.PNO, COUNT(p.EID) AS numOfEmployee
FROM
Pro_works_on AS p
GROUP BY
p.PNO
ORDER BY COUNT(p.EID) DESC;
Наконец, поскольку вам нужен только один проект с наибольшим количеством сотрудников, добавьте ограничитель строк,В SQL Server это делается с помощью выражения TOP (N)
.А поскольку вас заботит только номер проекта, а не фактическое количество сотрудников, вы можете взять COUNT
из результатов и просто оставить его в ORDER BY
.
SELECT TOP(1) WITH TIES
p.PNO
FROM
Pro_works_on AS p
GROUP BY
p.PNO
ORDER BY COUNT(p.EID) DESC;
РЕДАКТИРОВАТЬ : Добавлено WITH TIES
в зависимости от вопроса ОП в комментариях.