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

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

提示

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

创建分组

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

SELECT vend_id, COUNT(*) AS num_prods
FROM Products
GROUP 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子句负责进行分组的过滤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值