算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
今天和大家聊的问题叫做 统计各专业学生人数,我们先来看题面:
https://leetcode-cn.com/problems/count-student-number-in-departments/
一所大学有 2 个数据表,分别是 student 和 department ,这两个表保存着每个专业的学生数据和院系数据。
写一个查询语句,查询 department 表中每个专业的学生人数 (即使没有学生的专业也需列出)。
将你的查询结果按照学生人数降序排列。
如果有两个或两个以上专业有相同的学生数目,将这些部门按照部门名字的字典序从小到大排列。
解题
https://cloud.tencent.com/developer/article/1787795
内层子表,先算出院系的人数
外层跟 department 表左连接
# Write your MySQL query statement below
select dept_name, ifnull(t.people,0) student_number
from department d left join
(
select dept_id, count(*) people
from student
group by dept_id
) t
on d.dept_id = t.dept_id
order by student_number desc, dept_name
好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。
上期推文: