lintcode-2064 · 查询上课学生人数均超过 Western Venom 老师所教课程的课程信息

举报
搞前端的半夏 发表于 2021/11/30 22:29:32 2021/11/30
【摘要】 大家好,我是半夏👴,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注➕ 点赞 👍 加我微信:frontendpicker,邀你进群,一起学习交流前端,成为更优秀的工程师~关注公众号:半夏话前端,了解更多前端知识!点我探索新世界! 描述请编写 SQL 语句,获取 Western Venom 教师所教的每门课程的学生人数,然后筛选课程表中哪些课程的上课学生数量均超过这些学生人数,并查...

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

描述

请编写 SQL 语句,获取 Western Venom 教师所教的每门课程的学生人数,然后筛选课程表中哪些课程的上课学生数量均超过这些学生人数,并查询这些课程的详细信息。

表定义 1:courses(课程表)

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

表定义 2:teachers(教师表)

列名 类型 注释
id int unsigned 主键
name varchar 教师姓名
email varchar 教师邮箱
age int 教师年龄
country varchar 教师国籍

**

  • 查询返回列名需要与样例输出的列名大小写一致。
  • 如果输入数据中存在学生总数为 NULL,则跳过该数据。
  • 如果查询不到结果,就什么都不返回。

样例

样例一:

表内容 1: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 Artificial Intelligence 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

表内容 2:teachers

id name email age country
1 Eastern Heretic eastern.heretic@gmail.com 20 UK
2 Northern Beggar northern.beggar@qq.com 21 CN
3 Western Venom western.venom@163.com 28 USA
4 Southern Emperor southern.emperor@qq.com 21 JP
5 Linghu Chong NULL 18 CN

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

id name student_count created_at teacher_id
12 Dynamic Programming 2000 2018-08-18 1

样例二:

表内容 1:courses

id name student_count created_at teacher_id
1 Senior Algorithm 880 2020-06-01 4
6 Artificial Intelligence 1660 2018-05-13 3
8 Data Analysis 500 2019-07-12 1
10 Object Oriented Design 300 2020-08-08 4

表内容 2:teachers

id name email age country
1 Eastern Heretic eastern.heretic@gmail.com 20 UK
2 Northern Beggar northern.beggar@qq.com 21 CN
3 Western Venom western.venom@163.com 28 USA
4 Southern Emperor southern.emperor@qq.com 21 JP
5 Linghu Chong NULL 18 CN

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

id name student_count created_at teacher_id

因为输入样例中没有符合条件的数据,所以这里只展示了标题,没有数据。

题解

这里主要使用all函数,首先根据名字找到id,再根据teacherid找到每门课程的学生人数。最后使用>进行比较。


SELECT * FROM courses
where student_count > all(
    SELECT cs.student_count FROM courses cs 
    join teachers ts 
    on cs.teacher_id = ts.id
    where ts.name = 'Western Venom'
)


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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