day3 超过5名学生的课

本题使用的是 MySQL8.0,没有在 MySQL5.6 版本中测验过,不保证正确。
题目 【day3 超过5名学生的课】查出超过或等于 5 名学生的课(学生的课不被重复计算)

create table courses ( student varchar(255), class varchar(255) )insert into courses values ('A', 'Math'), ('B', 'English'), ('C', 'Math'), ('D', 'Biology'), ('E', 'Math'), ('F', 'Computer'), ('G', 'Math'), ('H', 'Math'), ('I', 'Math');

SQL:方法一
select class from courses group by class having count(*) >= 5;

解析 题目来源:超过5名学生的课
学生的课不重复,所以按照 class 分组,在使用 having 筛选出大于等于 5 课的同学
SQL:方法二
select class from ( select class, count(*) as num from courses group by class ) as c where num >= 5;

解析
  • 首先查出每门课的学生人数,使用 group by 分组
  • 把这次查询作为一个临时表
  • 再次对这张表进行查询,筛选条件是人数大于等于 5 人。
更多解题参考:https://github.com/astak16/bl...

    推荐阅读