本题应用的是 MySQL8.0,没有在 MySQL5.6 版本中测验过,不保障正确。
题目
查出超过或等于 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...