总共有两张表,一张是“Department”表,其中包含department_name、department_block_number和department_id(主键),另一个表是“Student”,其中包含student_name、student_id和department_id(外键)。因此,根据这种情况,我们必须显示学生人数最多的系的名称。
我尝试了一些东西,下面你可以找到我的代码,但它没有按预期工作,所以你能帮我纠正它吗?
select u
from
(select count(s.student_id) cnt,d.department_name u
from department d
join student s using(department_id)
group by d.department_name
where cnt==(select max(cntt) from (select
count(ss.student_id) cntt,dd.department_name
from department dd
join student ss using(department_id)
group by dd.department_name)
)
);
注意:这个问题属于子查询部分。
最佳答案
您只需按降序统计所有院系的所有学生,然后限制为第一个结果:
SELECT a.`department_name`
count(b.`student_id`) as `num_students`
FROM `Department` a
JOIN `Student` b
ON a.`department_id` = b.`department_id`
GROUP BY `a.department_id`
ORDER BY count(b.`student_id`) DESC
LIMIT 1;
关于mysql - 显示学生人数最多的院系名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44762230/