SQL 分组数据

版权声明:最终解释权归属Hern所有,恒! https://blog.csdn.net/qq_36761831/article/details/83004264

创建分组

分组是在SELECT语句的GROUP BY子句中建立的。

1、GROUP BY子句可以包含任意数目的列。

2、如果在GROUP BY子句中嵌套分组,数据将在最后规定的分组上进行汇总(在建立分组时,指定的所有列都一起计算,即:不能从个别的列取回数据)。

3、GROUP BY子句中列出的每个列都必须是检索列或有效的表达式,但不能是聚集函数(AVG()、COUNT()等函数)。

4、除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出。

5、如果分组列中具有NULL值,则NULL将作为一个分组返回。如果有多行NULL值,他们将分为一组。

6、GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。

7、使用WITH ROLLUP关键字们可以得到每个分组以及每个分组汇总级别(针对每个分组)的值。

过滤分组

使用HAVING子句进行分组过滤,HAVING子句非常类似WHERE子句,事实上,基本上所有类型的WHERE子句都可以使用HAVING子句来代替,并且HAVING子句支持所有WHERE操作符。

HAVING和WHERE的差别:WHERE子句过滤行,HAVING子句过滤分组,WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤,WHERE排除的行不包括在分组中,这可能会改变计算值,从而影响HAVING子句中基于这些值过滤掉的分组。

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/83004264