day3 超過5名學生的課

uccs發表於2022-01-21

本題使用的是 MySQL8.0,沒有在 MySQL5.6 版本中測驗過,不保證正確。

題目

題目來源:超過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;

解析

學生的課不重複,所以按照 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...

相關文章