justdo-it  

There is a table courses with columns: student and class

Please list out all classes which have more than or equal to 5 students.

For example, the table:

+---------+------------+
| student | class      |
+---------+------------+
| A       | Math       |
| B       | English    |
| C       | Math       |
| D       | Biology    |
| E       | Math       |
| F       | Computer   |
| G       | Math       |
| H       | Math       |
| I       | Math       |
+---------+------------+

Should output:

+---------+
| class   |
+---------+
| Math    |
+---------+

Note:
The students should not be counted duplicate in each course.

解法一: select courses_cnt.class from (select count(DISTINCT student)as cnt,class from courses where 1=1 group by class) as courses_cnt where courses_cnt.cnt >= 5
 
解法二:分组
select c.class
from courses c
group by c.class
having count(DISTINCT c.student)>4
posted on 2018-02-27 19:29  justdo-it  阅读(401)  评论(0)    收藏  举报