自学内容网 自学内容网

【SQL】超过五名学生的课程

目录

语法

需求

示例

分析

代码


语法

SELECT column1, column2, AGGREGATE_FUNCTION(column3)

FROM table_name

WHERE condition

GROUP BY column1, column2;

  • column1 和 column2 :要分组的列。
  • AGGREGATE_FUNCTION(column3) :对分组应用的聚合函数,如 SUM(column3) 或 COUNT(column3)。
  • table_name :表名。

GROUP BY 是 SQL 语言中的一个子句,用于将结果集中的行分组,并对每个组应用聚合函数(如 COUNT、SUM、AVG、MAX、MIN 等)。它通常与聚合函数一起使用,以便对每个分组进行统计计算。GROUP BY 语句在数据分析和报表生成中非常有用,因为它允许你按照一个或多个列的值对数据进行分组,并计算每个组的汇总信息。

SELECT column_list, AGGREGATE_FUNCTION(column)

FROM table_name

GROUP BY column_name

HAVING filter_condition;

  • AGGREGATE_FUNCTION(column):对分组后的数据应用的聚合函数。
  • table_name:表名。
  • column_name:按照其值进行分组的列。
  • filter_condition:基于聚合函数结果的条件,用于过滤分组

HAVING子句是一个条件筛选语句,用于过滤分组后的数据。它允许基于聚合函数(如SUM、COUNT、AVG等)的结果对分组进行筛选,从而只返回满足特定条件的分组。

在HAVING子句中,由于聚合函数的计算是在GROUP BY子句之后进行的,因此不能直接使用聚合函数的别名。如果需要使用聚合函数的别名进行条件筛选,则可以使用子查询或公共表表达式(CTE)。HAVING子句的条件可以使用各种操作符,包括比较运算符(如=、<>、>、<等)、逻辑运算符(如AND、OR、NOT等)以及聚合函数。
 


 

需求

表: Courses

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| student     | varchar |
| class       | varchar |
+-------------+---------+
(student, class)是该表的主键(不同值的列的组合)。
该表的每一行表示学生的名字和他们注册的班级。

查询 至少有 5 个学生 的所有班级。

以 任意顺序 返回结果表。

结果格式如下所示。

示例

输入: 
Courses table:
+---------+----------+
| student | class    |
+---------+----------+
| A       | Math     |
| B       | English  |
| C       | Math     |
| D       | Biology  |
| E       | Math     |
| F       | Computer |
| G       | Math     |
| H       | Math     |
| I       | Math     |
+---------+----------+
输出: 
+---------+ 
| class   | 
+---------+ 
| Math    | 
+---------+
解释: 
-数学课有 6 个学生,所以我们包括它。
-英语课有 1 名学生,所以我们不包括它。
-生物课有 1 名学生,所以我们不包括它。
-计算机课有 1 个学生,所以我们不包括它。

分析

查询 至少有5个学生 的所有班级。

Courses表中包含学生id和班级,需要查询至少有五个学生的所有班级,即学生数量大于等于五的班级,需要通过count()计数,count(student)>=5,

计数前需要先按照班级分组,group by class

至少有5个学生

限制条件是学生数量,通过having实现限制条件,having count(student)>=5

代码

select class
from Courses
group by class
having count(student)>=5


原文地址:https://blog.csdn.net/weixin_73404807/article/details/142795750

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!