必知必会-第十三章

分组数据

本章介绍如何分组数据,两个关键字GROUP BY和HAVING。

分组的作用

分组允许把数据分为多个逻辑组,以便对每个逻辑组进行聚集计算。

分组的规定

在使用group by之前,需要知道一些规定:

  • GROUP BY子句任意数据的列,这意味着可以对分组进行嵌套,为数据分组提供更细致的控制。
  • 如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组上进行汇总。换句话说,在建立分组时,指定的所有列都在一起计算(所以不能从个别列取回数据)。
  • GROUP BY子句列出的每个列都必须是检索列或者有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。
  • 除了聚集计算语句之外,SELECT语句中的每个列都必须在GROUP BY子句中给出。
  • 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。
  • GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。

以上是书中的提示,我现在也是云里雾里,一会实践操作一下应该就懂了。

过滤分组

mysql允许用GROUP BY进行分组,而且还允许过滤分组,规定包括哪些分组,排除哪些分组。
使用HAVING,其实HAVING和WHERE很相似,所有的WHERE子句都可以用HAVING子句来代替,它们唯一的区别就是WHERE过滤行,HAVING过滤分组。(语法都是一样的,仅仅是关键字有差异)

你可能感兴趣的:(必知必会-第十三章)