Как использовать COUNT и MAX вместе, но по группам? - PullRequest
0 голосов
/ 16 мая 2019

Как отобразить название проекта со вторым по количеству сотрудников?

Схема отношений с первичным ключом и внешним ключом в зависимости от обстоятельств:

Employee(Eid,Ename,Address,city,Doj,salary) Project(Pid,Location,Pname,Mng,Client,Branch)
Works(Eid,Pid)

Ид и Пид в работах являются ForeignKey. eid и pid являются первичными ключами сотрудника и проекта соответственно

select count (*) , pname
from project natural join work
group by pname;

Но это даст только количество сотрудников в соответствии с проектом ... Не максимальное количество сотрудников

select max as ex1
from (Select count(*) as ex1
      from works
      where PID in ( select distinct pid from works);

Я пытаюсь это в Linux - оракул

Ответы [ 2 ]

0 голосов
/ 16 мая 2019
SELECT COUNT(W.Eid) AS TotalEmployees, P.pname 
FROM Works W
     INNER JOIN Project P ON W.Pid = P.Pid   
GROUP BY P.Pid
ORDER BY TotalEmployees desc
OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY
0 голосов
/ 16 мая 2019

ОК, я думаю, что приведенный ниже SQL вернет то, что вы хотите (имя проекта № 2 и номера сотрудников):

select * from 
(
select
    p.pname,
    count(1) as cc
from
    work w
join
    project p on w.pid = p.pid
join
    employee e on w.eid = e.eid
group by
    p.pname
order by cc desc limit 2
) tmp order by cc asc limit 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...