Group By子句
Group By子句主要指出对查询结果分组的依据,通常跟聚合函数(Sum, Max,Min等)一起使用.举个例子:比如我们可以使用SUM函数计算所有商店的销售总额,如果我们希望计算每一家商店各自的总销售额时该怎么办呢?要实现这一目的我们需要做两件事:首先,我们需要查询商店名称和销售额两个字段;然后,我们使用SQL语言的GROUP BY命令将销售额按照不同的商店进行分组,从而计算出不同商店的销售总额。GROUP BY命令的语法格式为:
SELECT "column_name1", SUM("column_name2")
FROM "table_name"
GROUP BY "column_name1"
例
“Sales”表中的原始数据:
Company Amount
W3Schools 5500
IBM 4500
W3Schools 7100
按照Company字段进行分组,求出每个Company的Amout的合计:
SELECT Company,SUM(Amount) FROM Sales GROUP BY Company
返回结果:
Company SUM(Amount)
W3Schools 12600
IBM 4500
小注:
GROUP BY关键字一般应用于同时查询多个字段并对字段进行算术运算的SQL命令中。
Having子句
Having子句跟Where类似,就是专门同Group By一起使用,指出在Group By中的条件.HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前.
而 HAVING子句在聚合后对组记录进行筛选。
select Company,sum(Amount) from Sales group by Company having count(Company)>1
小结:
Group By语句使用中一般必须有聚合函数,对数据进行分类.Having就是专门用来指定Group By子句中的条件的.