聚合函数的作用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

在查询中会经常碰到的要求是取某些列的最大值、最小值、平均值等信息,有时候还需要计算出究竟查询到多少行数据项。这时候,就会使用到聚合函数。
常见的聚合函数SumAvgMaxMinCount

1.       Sum

Sum返回表达式中所有数值的总和,Sum只能用于数字类型的页,不能够汇总字符、日期等其他数据类型。
案例需求:查询用户‘13701418965’的合计欠费金额。
实现方法如下

Use Tariffsmall
Go  
Select Phonenumber,Sum(CHARGE)
From accountbill
Where isPaid=0 AND phoneNumber='13701418965'
Go
这种查询只能返回一个数值,因此,不能够直接与可能返回多行的列一起使用来进行查询,例如

Use Tariffsmall
Go  
Select Phonenumber,Sum(CHARGE)
From accountbill
Where isPaid=0 AND phoneNumber='13701418965'
Go
将报告错误信息。但是,在一个查询中可以同时使用多个聚合函数。
2.       Avg

Avg函数返回表达式中所有数值的平均值,Avg函数也只能用于数字类型的页。
案例需求: 历史账单中20086月份的用户平均话费。

例如:

Select  Avg(CHARGE) as 平均话费
From "history-accountbill"
Where accounttime between '2008-06-01 00:00:00 AND '2008-06-30 23:59:59'
3MaxMin

Max返回表达式中的最大值,Min返回表达式中的最小值,它们都可以用于数字型、数字型以及日期/时间类型的列

 

案例需求,查询20086月电话话费单笔最高费用和单笔最低费用
例如:
Select Max(CHARGE) as 单笔最高话费,Min(CHARGE) as 单笔最低话费
From "history-accountbill"
Where accounttime
 between '2008-06-01 00:00:00‘ and '2008-06-30 23:59:59'

4Count

Count返回表达式中的非空值的计数,Count可以用于数字和字符类型的列。
另外,也可以使用星号(*)作为Count的表达式,使用星号可以不必指定特定的列而计算所有的行数。
案例需求: Tariffsmall数据库中查询欠费账单数,该如何统计账单个数:

例如:
Select Count(*)  as 欠费账单数
From accountbill
Where ispaid=0
案例需求:如果查询欠费用户数,该如何统计不同用户号码的数量:
例如:
Select Count(Distinct phonenumber)  as 欠费用户数
From accountbill
 Where ispaid=0