黑马程序员_聚合函数
聚合函数
像sum()、count()、avg()等都是聚合函数
使用用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算。运算完后就要用到HAVING 的用法了,就是进行判断了。
select customer_name,sum(balance)
from balance
group by customer_name
having balance>200;
1.GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用
group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。
2. Having
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
如合计函数 (SUM) 需要添加 GROUP BY 语句,使用group by 的目的就是要将数据分类汇总。
A表:
Id A.Date A.Price Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter
查找每个客户的总金额(总订单)。
需要使用 GROUP BY 语句对客户进行组合。
SELECT Customer,SUM(A.Price) FROM A
GROUP BY Customer
Customer SUM(A.Price)
Bush 2000
Carter 1700
Adams 2000
如果省略 GROUP BY 会出现什么情况:
SELECT Customer,SUM(A.Price) FROM A
Customer SUM(A.Price)
Bush 5700
Carter 5700
Bush 5700
Bush 5700
Adams 5700
Carter 5700
上面的 SELECT 语句指定了两列(Customer 和 SUM(A.Price)。"SUM(A.Price)" 返回一个单独的值("A.Price" 列的总计),而 "Customer" 返回 6 个值(每个值对应 "A" 表中的每一行)。因此,我们得不到正确的结果。