首页 理论教育 使用GROUPBY子句实现分组汇总

使用GROUPBY子句实现分组汇总

时间:2023-11-03 理论教育 版权反馈
【摘要】:GROUP BY子句指定用来放置输出行的组。指定GROUP BY时,选择列表中任意非聚合表达式内的所有列都应包含在GROUP BY列表中,或者GROUP BY表达式必须与选择列表表达式完全匹配。聚合函数经常与SELECT语句的GROUP BY子句一起使用。表4.4常用的聚合函数COUNT()查询学生总人数,SQL语句如下:执行以上SQL语句,查询结果如图4.30所示。图4.36查询C语言所有成绩中的最低分3.GROUP和聚合函数结合使用按课程编号分组,同时统计该组别信息。

使用GROUPBY子句实现分组汇总

GROUP BY子句指定用来放置输出行的组。如果SELECT子句<select list>中包含聚合函数,则GROUP BY将计算每组的汇总值。指定GROUP BY时,选择列表中任意非聚合表达式内的所有列都应包含在GROUP BY列表中,或者GROUP BY表达式必须与选择列表表达式完全匹配。

1.简单分组

课程编号分组,可查看有哪些课程组别。SQL语句如下:

执行以上SQL语句,查询结果如图4.29所示。

图4.29 按课程编号分组

2.聚合函数

聚合函数对一组值执行计算,并返回单个值。除了COUNT以外,聚合函数都会忽略空值。聚合函数经常与SELECT语句的GROUP BY子句一起使用。

聚合函数只能在以下位置作为表达式使用:

➢SELECT 语句的选择列表(子查询或外部查询);

➢COMPUTE 或 COMPUTE BY 子句;

➢HAVING 子句。

Transact-SQL 提供的常见聚合函数,见表4.4。

表4.4 常用的聚合函数

➢COUNT()

查询学生总人数,SQL语句如下:

执行以上SQL语句,查询结果如图4.30所示。

图4.30 查询学生总人数

查询参加过考试的学生总人数,SQL语句如下:

执行以上SQL语句,查询结果如图4.31所示。

图4.31 查询参加过考试的学生总人数

查询C语言成绩超过90分的学生人数,SQL语句如下:

执行以上SQL语句,查询结果如图4.32所示。

图4.32 查询C语言成绩超过90分的学生人数

➢SUM()、AVG()

查询C语言所有成绩的总分,SQL语句如下:

执行以上SQL语句,查询结果如图4.33所示。(www.xing528.com)

图4.33 查询C语言所有成绩的总分

查询C语言所有成绩的平均分,SQL语句如下:

执行以上SQL语句,查询结果如图4.34所示。

图4.34 查询C语言所有成绩的平均分

➢MAX()、MIN()

查询C语言所有成绩中的最高分,SQL语句如下:

执行以上SQL语句,查询结果如图4.35所示。

图4.35 查询C语言所有成绩中的最高分

查询C语言所有成绩中的最低分,SQL语句如下:

执行以上SQL语句,查询结果如图4.36所示。

图4.36 查询C语言所有成绩中的最低分

3.GROUP和聚合函数结合使用

按课程编号分组,同时统计该组别信息。SQL语句如下:

执行以上SQL语句,查询结果如图4.37所示。

图4.37 按课程编号分组并统计该组别信息

查询每门课程中,成绩在90分以上的学员人数。SQL语句如下:

执行以上SQL语句,查询结果如图4.38所示。

图4.38 查询每门课程中成绩在90分以上的学员人数

若需列出所有组别,则使用ALL,对比上面的结果。SQL语句如下:

执行以上SQL语句,查询结果如图4.39所示。

图4.39 列出所有组别

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈