关于mysql:day3-超过5名学生的课

38次阅读

共计 577 个字符,预计需要花费 2 分钟才能阅读完成。

本题应用的是 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…

正文完
 0