数据库系列之查询(3)

什么是分组统计


按水果的种类分组,然后分别汇总

语法


SELECT   <字段列表>   [聚合函数]
FROM  表
[WHERE]  条件
GROUP BY  <字段列表>
其中<字段列表>可以有多个字段,各字段用逗号隔开,它表示按哪些列进行分组。
分组统计牢记:SELECT语句中除聚合函数外,所有列应写在Group By语句后面,否则将出现错误。

示例


统计结果集应包含“城市、性别和人数3列信息”。
很明显应该按照City和Sex两列进行分组。
分组后仍使用Count()聚合函数汇总行数。

SELECT  City as 城市, Sex as 性别, Count(*)  as 人数 
FROM Customers 
Group By City, Sex

使用HAVING子句对分组结果再次过滤
继续考虑上面的查询,如果“要统计不同城市不同性别的会员个数,并且只显示会员个数大于2个的记录”如何处理呢?
需要对分组后的数据进行筛选,  筛选条件Count(*) >=2。
对分组后的数据进行筛选需要使用Having子句。

SELECT  City as 居住城市, Sex as 性别, Count(*)  as 会员人数 
FROM Customers
Group By City, Sex
HAVING Count(*) >= 2

分组查询的过滤

WHERE子句:
从数据源中去掉不符合其搜索条件的数据
GROUP BY子句:
搜集数据行到各个组中,统计函数为各个组计算统计值
HAVING子句:
去掉不符合其组搜索条件的各组数据行
where -> group by -> having

原文地址:https://www.cnblogs.com/cmhunter/p/4278957.html