问题描述:
有一个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:
学生在每个课中不应被重复计算。
分析:
SELECT class from courses
group by class having count(DISTINCT student) >= 5;
关于GROUP BY :用于结合聚合函数,根据一个或多个列对结果集进行分组;必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
注意:聚合函数是---sum()、count()、avg()等都是“聚合函数”
◆COUNT() 函数:返回匹配指定条件的行数;
▷COUNT(DISTINCT column_name) 函数返回指定列的不同值的数目
SELECT COUNT(DISTINCT column_name) FROM table_name;
▷COUNT(*) 函数返回表中的记录数:
SELECT COUNT(*) FROM table_name;
▷COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入):
SELECT COUNT(column_name) FROM table_name;
◆AVG() 函数:返回数值列的平均值。SELECT AVG(column_name) FROM table_name
◆SUM() 函数:返回数值列的总数,SELECT SUM(column_name) FROM table_name;
本文介绍如何使用SQL语句,通过GROUP BY和HAVING子句结合COUNT(DISTINCT)函数,从courses表中筛选出拥有5名及以上不同学生的热门课程。文章详细解释了聚合函数如COUNT(), AVG(), SUM()的用法,以及它们在数据分析中的作用。
471

被折叠的 条评论
为什么被折叠?



