ty9919 发表于 2016-11-2 05:16:36

SQL Server 2005---聚合函数(分组函数)

转载于:http://blog.csdn.net/hanren86/article/details/5744785
聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值(NULL)。聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。
所有聚合函数均为确定性函数。也就是说,只要使用一组特定输入值调用聚合函数,该函数总是返回相同的值。

聚合函数只能在以下位置作为表达式使用:

SELECT 语句的选择列表(子查询或外部查询)。COMPUTE 或 COMPUTE BY 子句。HAVING 子句。1.COUNT( { [ ALL ]expression| * } )
SQL提供了COUNT函数来查询满足设定标准的记录的数量。我们可以使用单独COUNT(*)语法来检索一个表内的行数。此外,还可以利用WHERE子句来设置计数条件,返回特定记录的条数。例如,假设我们的产品销售经理想了解公司处理了多少张要求购买100个以上产品的订单。下面是满足这个条件的SQL查询脚本:



SELECT COUNT(*) AS '大订单数量'  
FROM ProductOrders
WHERE 数量> 100
返回结果如下:
大订单数量
----------------------
3

COUNT函数还允许使用 DTINCT关键字和表达式来计算满足表达式的值在目标数据中出现的数量。同样地,还可以使用ALL关键字来返回满足表达式的值的全部数量,不管其中有没有重复值。例如,产品经理想通过一个简单查询返回数据库中“所在地”的数量。
  首先我们来看看使用ALL关键字的查询:

SELECT COUNT(ALL 所在地 ) As ' 所在地数量 '  
FROM ProductOrders
返回的结果为:
所在地数量
--------------------
7


显然这不是我们需要的结果。因为根据ProductOrders表所示,所有订单的所在地只有三个,分别是北美洲、非洲、欧洲。下面让我们来用DISTINCT关键字来代替看看: 
  

SELECT COUNT(DISTINCT 所在地) As '所在地数量'  
FROM ProductOrders
返回的结果为:
所在地数量
--------------------
3

这才是我们想要的结果。
2.SUM函数
返回表达式中所有值或仅 DISTINCT 值的总和。SUM 只能与数字列一起使用。空值将被忽略。
这个函数通常在SELECT语句中使用,返回系列值的总数。假设产品项目经理想了解目前为止商品的总销售额,那么我们可以使用以下的查询脚本:

SELECTSUM(数量)AS总数  
  FROMProductOrders
  执行语句将返回以下结果:
  Total
  -----------
  1837


3.AVG函数
返回组中各值的平均值。空值将被忽略。

AVG函数(平均函数)使用方法和SUM类似,它给我们提供系列值的算术平均数。这次我们可以尝试稍微复杂点的任务:找出北美洲大陆所有订单的金额平均值。注意,我们需要将“数量”列和“单价”列相乘计算出每张订单的金额总数。查询脚本如下:
  

SELECT AVG(单价* 数量) As 平均金额  
FROM ProductOrders
WHERE 所在地 = “北美洲”
返回结果如下:
平均金额
---------------------
862.3075


4.MAX函数
返回表达式中的最大值。空值将被忽略。
MAX()函数返回给定数据集中的最大值。我们可以给该函数一个字段名称来返回表中给定字段的最大值。还可以在MAX()函数中使用表达式和GROUP BY从句来加强查找功能。
还是ProductOrders表,假设我们的产品经理想要从这个数据库中找到给公司带来最多收入的那份订单。我们可以使用以下查询来找到这张订单,并返回该订单的销售总金额:

SELECTMAX(数量*单价)As'最大的订单'  
  FROMProductOrders
  返回结果如下:
  最大的订单
  ---------------------
  2517.58


5.MIN函数
返回一组原子值 $arg 中的最小值。
MIN()函数的用法类似,但返回表达式的最小值。让我们用MIN()函数来尝试稍微复杂一点的查询。我们的销售部门目前正在分析小订单的数据。他们想要查询每个所在地的最小订单。这除了要在表达式中计算值外,还需要用到GROUP BY从句来总结所在地的数据。SQL查询如下:

  
SELECT 所在地 , MIN( 数量 * 单价 ) AS ' 最小订单 '
FROM ProductOrders
GROUP BY 所在地
返回结果如下:
所在地最小订单
------------- ---------------------
非洲167.04
欧洲2099.02
北美洲70.65
页: [1]
查看完整版本: SQL Server 2005---聚合函数(分组函数)