【书山有路】SQL必知必会 第10课

来源:互联网 发布:无缝丝袜淘宝贴吧 编辑:程序博客网 时间:2024/06/05 17:48

本章的主题是“分组数据”,介绍如何分组数据,以便汇总表内容的子集。涉及到GROUP BY和HAVING子句。

提示

  • 使用分组可以将数据分为多个逻辑组,对每个组进行聚集计算。
  • HIVING支持所有WHERE操作符。
  • WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。

创建分组

分组是使用SELECT语句和GROUP BY子句建立的。来看下面的SQL命令:

SELECT vend_id, COUNT(*) AS num_prodsFROM ProductsGROUP BY vend_id;

GROUP BY 子句指示DBMS分组数据,然后对每个组而不是整个结果集进行聚集。

关于GROUP BY的重要规定

  • GROUP BY子句可以包含任意数目的列,因而可以对分组进行嵌套,更细致的进行数据分组。
  • 如果在GROUP BY子句中嵌套了分组,数据将在最后指定的分组上进行汇总。
  • GROUP BY的每一列不能是聚集函数。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。
  • 除聚集字段语句外,SELECT语句中的每一列都必须在GROUP BY子句中给出。
  • 如果分组列中包含具有NULL值的行,则将NULL作为一个分组返回。
  • GROUP BY必须出现在WHERE子句之后,ORDER BY子句之前。

过滤分组

SQL允许过滤分组,规定包括哪些分组,排除哪些分组。HAVING子句负责进行分组的过滤。

0 0
原创粉丝点击