天天看点

数据库学习笔记系列(5)——分组查询

数据库中的分组查询可以通过group by命令来实现。

group by子句可以将查询结果表的各行按一列或多列取值相等的原则(一组的数据中它们被分组的字段一定是相同的)。

对查询结果分组的目的是为了细化集函数的作用对象。如果未对查询结果分组,集函数将作用于整个参训结果,即整个查询结果只有一个函数值。否则,集函数将作用于每一个组,即每一组都有一个函数值。

原始表的情况:

数据库学习笔记系列(5)——分组查询

1. 查询每个课程人的均分

数据库学习笔记系列(5)——分组查询

我们可以看出group by主要在精细集函数的作用对象。

如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足满足指定条件的组,则可以使用having短语指定筛选条件。

2. 选课人数大于2人的每个课程的均分

数据库学习笔记系列(5)——分组查询

注意,having之后的筛选条件最好是和分组相关的字段。如果不是相关的字段,就很有可能出错。

例如上例中分组的依据只算是course, 而count的也是course的人数,但是假如我们换成性别ssex,那么就会出现下面的错误:

数据库学习笔记系列(5)——分组查询

我们发现:女生选择的课程不是只有C语言,但是查询的结果就只有一条数据。所以我们在使用分组查询的时候要注意这点。