解题思路:
使用group by 进行分组查询,并用having限制分组条件,在本题中,需要使用group by 对class字段进行分组,然后用count()函数统计分组的人数,最后用having进行筛选具体代码如下:
select class from courses group by class having count(class)>=5
现在来看看官方题解:
首先,我们可以统计每个班级的学生数量。然后选择学生数大于 5 的班级。
要获得每个班级的学生数,我们可以使用 GROUP BY 和 COUNT,这在根据表中的某些字符进行统计时非常常用。
SELECT
class, COUNT(student)
FROM
courses
GROUP BY class
;
class | COUNT(student) |
Biology | 1 |
Computer | 1 |
English | 1 |
Math | 6 |
为了继续,我们可以通过将上面的查询作为子查询来过滤班级。
SELECT
class
FROM
(SELECT
class, COUNT(student) AS num
FROM
courses
GROUP BY class) AS temp_table
WHERE
num >= 5
;
注意:给 COUNT(student) 添加一个别名 (在这里是'num') ,这样您可以在 WHERE 子句中使用它,因为它不能直接在那里使用。
方法2:使用 GROUP BY 和 HAVING 条件
思路
使用子查询是在 GROUP BY 子句中添加一些条件的一种方法,然而,使用 HAVING 是另一种更简单和自然的方法。所以我们可以将上面的解决方案改写如下。
MySQL
SELECT
class
FROM
courses
GROUP BY class
HAVING COUNT(student) >= 5
;
作者:力扣官方题解
链接:https://leetcode.cn/problems/classes-more-than-5-students/solutions/2366294/chao-guo-5ming-xue-sheng-de-ke-by-leetco-l4es/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。