题目:有一个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 |
±--------+
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/classes-more-than-5-students
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路: 首先是要求超过五个学生的课程,此时我们应该要想到可以先将他们按课程分类,这样就方便对每个课程选修人数计数,
用到group by … having… ,一定要用distinct 去重,不然会有重复计数。
解题代码:
第一种方法:
/* Write your T-SQL query statement below */
select class from courses
group by class
having count(distinct student) >=5;
第二种方法:
select class from (
select class , count(distinct student) as num
from courses
group by class
)as table2
where num >=5