lintcode-2069 · 查询每个教师授课学生人数最高的课程名称和上课人数

举报
搞前端的半夏 发表于 2021/11/30 22:28:51 2021/11/30
【摘要】 大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界! 描述请编写 SQL 语句,从课程表 courses中查询每个教师授课学生人数最高的课程名称 name 和上课人数 student_count。表定义: ...

大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界!

描述

请编写 SQL 语句,从课程表 courses中查询每个教师授课学生人数最高的课程名称 name 和上课人数 student_count

表定义: courses (课程表)

列名 类型 注释
id int unsigned 主键
name varchar 课程名称
student_count int 学生总数
created_at date 课程创建时间
teacher_id int unsigned 讲师 id

**

  • 查询返回列名需要与样例输出的列名大小写一致
  • 如果输入数据为空,则返回 NULL
  • 若一个教师有多节学生数的最大的课,则返回多节课

样例

样例 一

表内容: courses (课程表)

id name student_count created_at teacher_id
1 Senior Algorithm 880 2020-06-01 4
2 System Design 1350 2020-07-18 3
3 Django 780 2020-02-29 3
4 Web 340 2020-04-22 4
5 Big Data 700 2020-09-11 1
6 Java P6+ 1660 2018-05-13 3
7 Java P6+ 780 2019-01-19 3
8 Data Analysis 500 2019-07-12 1
10 Object Oriented Design 300 2020-08-08 4
12 Dynamic Programming 2000 2018-08-18 1

在运行你的 SQL 语句之后,表应返回:

name student_count
Advanced Algorithms 880
Artificial Intelligence 1660
Dynamic Programming 2000

样例 二

表内容: courses (课程表)

id name student_count created_at teacher_id
1 Web 800 2019-8-9 3
2 Database 1440 2018-10-8 1
3 cloud computing 850 2020-4-5 2
4 C++ 970 2020-5-28 4
5 virtual reality 970 2020-11-21 4

在运行你的 SQL 语句之后,表应返回:

name student_count
Web 800
Database 1440
cloud computing 850
C++ 970
virtual reality 970

样例二中教师 id 为 4 的教师的两门课程学生数相等且最大,所以两门课都返回

题解

首先根据使用group by 按照老师进行分组。然后从分组中select出老师id和最大学生数量,然后根据教师id和学生数量在不在找到的分组中,获取到最终的数据。

select name,
student_count student_count
from courses
where (teacher_id,student_count) in(
select teacher_id,max(student_count) from courses group by teacher_id
)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。