我们知道,在使用聚集函数都是表的所有数据或匹配特定的WHERE子句的数据上进行的。
例如下面返回厂商id为1001生产了多少种产品的总数:
但是当我们想知道所有厂商生产的产品的种类总数时、或者提供了数量超过100件的商品种类的总数时应该怎么处理?
答:通过分组条件把数据分成多个分组,然后通过聚集函数对分别每个组进行计算
一、创建分组
分组是在SELECT语句中的GROUP BY子句中建立的。
二、过滤分组
MySQL允许我们用HAVING过滤分组,但注意这种过滤是基于完整分组而不是个别个体进行过滤。
注意:
- WHERE和HAVING不同,WHERE过滤指定的是行而不是分组。
请看以下示例:
三、SELECT子句的顺序
- SELECT ---- 要返回的列或者表达式(必需)
- FROM ---- 从中检索数据的表(必需)
- WHERE ---- 行级过滤(否)
- GROUP BY ---- 分组说明 (否,按级计算聚集时)
- HAVING ---- 组级过滤(否)
- ORDER BY ---- 输出排序顺序(否)
- LIMIT ---- 要检索的行数(否)