黑马程序员_聚合函数

聚合函数
像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" 表中的每一行)。因此,我们得不到正确的结果。

 

posted @ 2013-04-16 19:18  微笑的小鸟  阅读(116)  评论(0编辑  收藏  举报