group by子句将查询结果按某一列或多列的值分组,值相等的为一组
对查询分组的目的就是为了细化聚集函数的作用对象,如果未对查询结果分组,聚集函数将作用于整个查询结果。而分组后聚集函数将作用于每一个组,即每一个组都有一个函数值,定义说的很严谨但我觉的并没什么实际的作用,下面给出官方解释
选择列表中任何非聚合表达式内的每个属性名都应包含在GROUP BY列表中,或者GROUP BY表达式必须与选择列表表达式完全
如果查询的列名不在group by 列表里面就会报错,报错信息如下
选择列表中的列 ‘course.sname’ 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中