首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写查询以显示具有最大学生数量的系名。

编写查询以显示具有最大学生数量的系名。
EN

Stack Overflow用户
提问于 2019-04-17 15:42:11
回答 4查看 15.1K关注 0票数 0

这是模式编写一个查询以显示具有最大学生数量的部门的名称。

这就是我们要尝试的。

代码语言:javascript
复制
select d.department_name,count(s.student_id)
     from department d left join student s
     on d.department_id=s.department_id 
     group by d.department_name,d.department_id
     order by d.department_name;

我觉得我的代码里缺少了什么

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-17 16:00:25

你快到了。

将结果按学生人数降序排列,然后取第一行:

代码语言:javascript
复制
SELECT department_name
FROM
(
  SELECT   d.department_name,
           COUNT(*) AS nr_students
  FROM     department d
  JOIN     student    s
    ON     d.department_id = s.department_id
  GROUP BY d.department_name
  ORDER BY nr_students DESC
)
WHERE ROWNUM <= 1;
票数 1
EN

Stack Overflow用户

发布于 2019-06-06 20:01:26

根据上面提到的架构,您必须从staff表向部门表进行连接(内部连接),才能获得部门的名称。

如果不需要部门的名称,并且可以只基于department_id进行计数,则不需要连接。

下面将介绍对这两种场景的查询。

Oracle查询具有部门名称的结果,即内部联接

代码语言:javascript
复制
SELECT D.DEPARTMENT_NAME, COUNT(S.DEPARTMENT_ID) AS STAFF_COUNT FROM **DEPARTMENT D, STAFF S** --INDICATES INNER JOIN IN ORACLE SQL
WHERE D.DEPARTMENT_ID = S.DEPARTMENT_ID
GROUP BY D.DEPARTMENT_NAME
ORDER BY STAFF_COUNT DESC

Oracle查询没有部门名称的结果,只查询department_id

代码语言:javascript
复制
SELECT S.DEPARTMENT_ID,COUNT(S.DEPARTMENT_ID) AS STAFF_COUNT FROM STAFF S
GROUP BY S.DEPARTMENT_ID
ORDER BY STAFF_COUNT DESC

希望这能有所帮助。干杯。

票数 0
EN

Stack Overflow用户

发布于 2021-05-19 05:38:30

我试过了而且成功了。

代码语言:javascript
复制
select department_name 
from department d inner join student s 
on s.department_id=d.department_id 
having count(*) in (
    select max(count(student_id)) 
    from student s join department d 
    on d.department_id=s.department_id 
    group by d.department_id)
group by d.department_id,department_name;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55731407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档