Leetcode SQL[596] Classes more than 5 students

Leetcode SQL[596] Classes more than 5 students

[175] Classes more than 5 stedents

有一個courses 表 ,有: student (學生) 和 class (課程)。

請列出所有超過或等於5名學生的課。

例如,表:

±--------±-----------+
| student | class |
±--------±-----------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Computer |
| G | Math |
| H | Math |
| I | Math |
±--------±-----------+
應該輸出:

±--------+
| class |
±--------+
| Math |
±--------+
Note:
學生在每個課中不應被重複計算。

思路

根據題目的意思,要提取出大於等於5次class的class 所以要用 having子句跟在group by(用來區分不同class)之後;此外要注意的是學生在每次課中不應被重複計算,所以having 子句中不能跟count(*) 而應該是count(distinct student) ,即根據class分類後,分組統計不重複的學生(distinct student),要求其符合條件。

代碼

select class
from courses
group by class
having count(distinct student) >= 5;

收穫

今晚網易數據分析實習崗的一道筆試題,極爲相似,無奈剛學SQL一週,下午又夾雜着多元的小測,居然沒想到使用having子句,在用where子句和子查詢中把自己邏輯給繞暈了,不夠熟練的結果啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章