首页 > 解决方案 > 如何一起使用 COUNT 和 MAX 但分组?

问题描述

如何显示员工人数第二多的项目名称?

关系模式,主键和外键适用:

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

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中尝试这个 - oracle

标签: sqloracle

解决方案


好的,我认为下面的 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

推荐阅读