一、Sql Server 中有哪些聚合函数?
提到聚合函数大家一定会首先想到最常用的:
1、 求个数:count
2、 求总和:sum
3、 求最大值:max
4、 求最小值:min
5、 求平均值:avg
聚合函数中有四个函数是我一直以来几乎就没有用到过的:
1、 求方差:var
2、 求总体方差:varp
3、 标准偏差:stdev
4、 求总体标准偏差:stdevp
除此以外Sql Server中还有几个集合函数:
1、 求校验和:checksum_agg
2、 求个数:count_big
3、 用于测试 cube 或 rollup 空值:grouping
二、聚合函数在什么情况下使用?
聚合函数只能在以下位置作为表达式使用:
1、 select 语句的选择列表(子查询或外部查询)。
2、 compute 或 compute by 子句。
3、having 子句。
三、聚合函数count和count_big的区别?
count_big的用法与count 函数类似。两个函数唯一的差别是它们的返回值。count_big始终返回 bigint 数据类型值。count始终返回 int 数据类型值。
四、应用实例
- if object_id('[tb]') is not null drop table [tb]
- create table [tb] (id int,num int)
- insert into [tb]
- select 1,92 union all
- select 2,94 union all
- select 3,96 union all
- select 4,98 union all
- select 5,100
- --求个数
- select count(*) as 行数from [tb] /*5*/
- --求总和
- select sum(num) as 总和from [tb] /*480*/
- --求最大值
- select max(num) as 最大值from [tb] /*100*/
- --求最小值
- select min(num) as 最小值from [tb] /*92*/
- --求平均值
- select avg(num) as 平均值from [tb] /*96*/
- --求方差
- select var(num) as 方差from [tb] /*10*/
- --求总体方差
- select varp(num) as 总体方差from [tb] /*8*/
- --求标准偏差
- select stdev(num) as 标准偏差from [tb] /*3.16227766016838*/
- --求总体标准偏差
- select stdevp(num) as 总体标准偏差from [tb] /*2.82842712474619*/
- --求校验和
- select checksum_agg(num) as 校验和from [tb] /*100*/
- --求个数
- select count_big(num) as 行数from [tb] /*5*/
- --grouping
- select isnull(ltrim(id),'合计') as id, sum(num) as num, grouping(id) as 'sgin'
- from [tb] group by id with rollup
- /*
- id num sgin
- ------------ ----------- ----
- 1 92 0
- 2 94 0
- 3 96 0
- 4 98 0
- 5 100 0
- 合计 480 1
- */