【发布时间】:2017-07-25 06:45:59
【问题描述】:
如何编写查询以显示学生人数最少的部门的名称。按部门名称升序排列结果
【问题讨论】:
-
完成你的作业我们能得到什么?你试过写任何查询吗?如果是,那么您的查询中有什么问题。
-
您的目标是哪个数据库,Oracle 还是 MySQL?如果是oracle,是哪个版本的数据库?进行
[top-n]查询的语法会有所不同。
如何编写查询以显示学生人数最少的部门的名称。按部门名称升序排列结果
【问题讨论】:
[top-n] 查询的语法会有所不同。
select d.department_name from
(select dd.department_name, count(di.department_id) as id from student di
join department dd on di.department_id=dd.department_id group by dd.department_name) d,
(select min(count(*)) as new from student group by department_id) d2
where d.id=d2.new;
【讨论】:
select d.department_name from Department d, Student s where
d.department_id = s.department_id
group by d.department_name
having count(s.student_id)<=all
(select count(s.student_id) from Department d, Student s where
d.department_id = s.department_id
group by d.department_name)
order by department_name;
试试这个。
【讨论】:
select d.department_id, d.department_name
from Department d
join Student s on d.department_id = s.department_id
group by d.department_id
having count(s.student_id) = (select min(count(s2.student_id))
from student s2
join department d2
on s2.department_id = d2.department_id
group by d2.department_id)
order by d.department_name
您必须连接 2 个表才能获得所需的信息。
您还必须按所选信息对他们进行分组,以便统计学生人数。
最后,您设置条件。需要一个子查询来检索最少学生数。
【讨论】:
select department_name
from Department
join Student
on Department.department_id=Student.department_id
having count(*) in
( select min(count(*)) from Student group by department_id)
group by Department.department_id,department_name
order by department_name asc;
【讨论】: