SqlServer聚合函数
聚合函数通常会在下列场合使用:
1、select语句的选择列表,包括子查询和外部查询。
2、使用compute或compute by产生汇总列时。
3、having子句对分组的数据记录进行条件筛选。
聚合函数
1、平均值AVG
AVG函数用于计算精确型或近似型数据类型的平均值,bit类型除外,忽略null值。AVG函数计算时将计算一组数的总和,然后除以为null的个数,得到平均值。
语法结构:
avg( [ all | distinct ] expression )
all:为默认值,表示对所用的数据都计算平均值。
distinct:每个值的唯一值计算平均值,不管相同的值出现多次,多个行相同的值仅仅出现一次作为计算。
expression:精确或近似值的表达式。表达式内部不允许使用子查询和其他聚合函数。
示例:
select avg(distinct age) from person -- 查询person表里的年龄的平均值,相同值只计算一次
2、最小值MIN
MIN函数用于计算最小值,MIN函数可以适用于numeric、char、varchar或datetime、money或smallmoney列,但不能用于bit列。不允许使用聚合函数和子查询,忽略null值。
语法结构:
min( [ all | distinct ] expression )
示例:
select min(age) from person -- 查询person表里的年龄的最小值
3、最大值MAX
MAX函数用于计算最大值,忽略null值。max函数可以使用于numeric、char、varchar、money、smallmoney、或datetime列,但不能用于bit列。不允许使用聚合函数和子查询。
语法结构:
MAX ( [ all | distinct ] expression )
示例:
select max(age) from person -- 查询person表里的年龄的最大值
4、求和值SUM
SUM函数用于求和,只能用于精确或近似数字类型列(bit类型除外),忽略null值,不允许使用聚合函数和子查询。
1、语法结构:
SUM ( [ all | distinct ] expression )
示例:
select sum(age) from person -- 查询person表里的年龄的总和
5、统计项数值count(count_big)
count函数用于计算满足条件的数据项数,返回int数据类型的值。
1、语法结构:
count( {[[ all | distinct] expression ] | * } )
这里的表达式是除text、image或ntext以外任何数据类型的表达式。但不允许使用聚合函数和子查询。
2、常见使用方法
count(*) : 返回所有的项数,包括null值和重复项。而除了count(*)外,其他任何形式的count()函数都会忽略Null行。除了Count(*)函数外,其他任何聚合函数都会忽略NULL值,也就是说,AVG()参数里的值如果为Null则这一行会被忽略如计算平均值,这点要注意。
count(all表达式):返回非空的项数。
count(distinct表达式):返回唯一非空的项数
count_big的语法与count完全一样,只不过返回值为bigint数据类型,这样返回的数值范围就可以大大超过count。
注意:count(字段名),如果字段名为NULL,则count函数不会统计。例如count(name),如果name为空,则不会统计到结果。
示例:
select count(distinct age) from person -- 查询person表里的年龄唯一且非空的项数
6、计算标准偏差值STDEV
语法结构:
STDEV( [all | distinct ] expression )
这里的expression必须是一个数值表达式,不允许使用聚合函数和子查询。表达式的值是精确或近似数值类型,但不包括bit数据类型。将忽略null值。
标准偏差是高中的东西,忘记干什么用的了,用到的时候再学回来吧。
示例:
select stdev(age) from person -- 查询person表里的年龄的标准偏差
7、计算方差VAR
VAR函数用于计算指定表达式中所有值的方差。
语法结构:
VAR( [ all | distinct ] expression )
这里的expression表达式必须是一个数值表达式,不允许使用聚合函数和子查询。表达式的值是精确或近似数值类型,但不包括bit数据类型,将忽略null值。
方差也是高中学的东西,忘了。
示例:
select var(age) from person -- 查询person表里的年龄的方差
8、CHECKSUM_AGG
返回组中各值的校验和。 将忽略 Null 值。CHECKSUM_AGG 可用于检测表中的更改。表中行的顺序不影响 CHECKSUM_AGG 的结果。此外,CHECKSUM_AGG 函数还可与 DISTINCT 关键字和 GROUP BY 子句一起使用。如果表达式列表中的某个值发生更改,则列表的校验和通常也会更改。但只在极少数情况下,校验值会保持不变。
语法如下:
CHECKSUM_AGG ( [ ALL | DISTINCT ] expression )
参数说明:
ALL:对所有的值进行聚合函数运算。 ALL 为默认值。
DISTINCT :指定 CHECKSUM_AGG 返回唯一校验值。
expression :一个整数表达式。 不允许使用聚合函数和子查询。
SELECT CHECKSUM_AGG(Account_Age) FROM Account
GO
UPDATE Account SET Account_Age = 30 WHERE Account_Id = 6
GO
SELECT CHECKSUM_AGG(Account_Age) FROM Account
显示结果如下:
可见随着表的更改,该系统函数返回的值也变了。此函数的作用正在于此,检测表的更改。
9、COUNT_BIG
返回组中的项数。 COUNT_BIG 的用法与 COUNT 函数类似。 两个函数唯一的差别是它们的返回值。 COUNT_BIG 始终返回 bigint 数据类型值。 COUNT 始终返回 int 数据类型值。
10、STDEVP 11、GROUPING 12、GROUPING_ID 13、VARP
SqlServer聚合函数的更多相关文章
- MSSQL sqlserver系统函数教程分享
摘要: 下文收集了sqlserver函数教程,为每一个函数都进行了相关举例说明, 如下所示: sqlserver聚合函数教程: mssql sqlserver avg聚合函数使用简介 mssql sq ...
- sqlserver的over开窗函数(与排名函数或聚合函数一起使用)
首先初始化表和数据 create table t_student( Id INT, Name varchar(), Score int, ClassId INT ); insert i ...
- sqlserver中的聚合函数
聚合函数:就是按照一定的规则将多行(Row)数据汇总成一行的函数,对数据进行汇总前,还可以按特定的列(coloumn)将数据进行分组(group by)再汇总,然后按照再次给定的条件进行筛选 一:Co ...
- 【SqlServer系列】聚合函数
1 概述 本篇文章简要回顾SQL Server 聚合函数,MAX,MIN,SUM,AVG,SUM,CHECKSUM_EGG,COUNT,STDEV,STDEVP,VAR,VARP. 2 具体 ...
- SQLServer 之 聚合函数
一.聚合函数介绍 1.聚合函数最常用的: (1) COUNT:求个数 count函数用于计算满足条件的数据项数,返回int数据类型的值. [1] 语法结构:COUNT( {[[ all | disti ...
- SqlServer 多表连接、聚合函数、模糊查询、分组查询应用总结(回归基础)
--exists 结合 if else 以及 where 条件来使用判断是否有数据满足条件 select * from Class where Name like '%[1-3]班' if (not ...
- SQL Server 自定义聚合函数
说明:本文依据网络转载整理而成,因为时间关系,其中原理暂时并未深入研究,只是整理备份留个记录而已. 目标:在SQL Server中自定义聚合函数,在Group BY语句中 ,不是单纯的SUM和MAX等 ...
- 【SQL】CLR聚合函数什么鬼
之前写过一个合并字符串的CLR聚合函数,基本是照抄MS的示例,外加了一些处理,已经投入使用很长时间,没什么问题也就没怎么研究,近日想改造一下,遇到一些问题,遂捣鼓一番,有些心得,记录如下. 一.杂项 ...
- sql server 2012 自定义聚合函数(MAX_O3_8HOUR_ND) 计算最大的臭氧8小时滑动平均值
采用c#开发dll,并添加到sql server 中. 具体代码,可以用visual studio的向导生成模板. using System; using System.Collections; us ...
随机推荐
- 又见Python<2>:如何安装第三方库(Windows)
使用python进行数据分析或者数据处理时,往往需要使用一些库,而使用库之前必须安装它.Anaconda内置了很多常用的第三方库,可以满足绝大部分需求,比如numpy.pandas.matplotli ...
- 一文了解JVM全部垃圾回收器,从Serial到ZGC
<对象搜索算法与回收算法>介绍了垃圾回收的基础算法,相当于垃圾回收的方法论.接下来就详细看看垃圾回收的具体实现. 上文提到过现代的商用虚拟机的都是采用分代收集的,不同的区域用不同的收集器. ...
- bzoj 3120 矩阵优化DP
我的第一道需要程序建矩阵的矩阵优化DP. 题目可以将不同的p分开处理. 对于p==0 || p==1 直接是0或1 对于p>1,就要DP了.这里以p==3为例: 设dp[i][s1][s2][r ...
- Codeforces Round #302 (Div. 2) D - Destroying Roads 图论,最短路
D - Destroying Roads Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/544 ...
- hdu 5210 delete 水题
Delete Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5210 D ...
- SQL Server2008无法修改表结构?
之前一直用SQL Server2005的数据库,最近升级到2008之后发现修改不了表结构,提示: 根据提示,取消“阻止保存要求重新创建表的更改”后就可以了. 具体操作:SQL Server Manag ...
- Microsoft Visual Studio 2010导致系统C盘不断增大问题处理。
一直用Microsoft Visual Studio 2010做开发,发现最近C盘空间是越来越小,一开始以为是IE或者一些系统补丁造成的临时文件,但是使用360,windows优化大师之类的软件都清过 ...
- 创建自己的Repo Server
非常久曾经出于好奇细致了解了下Repo及server的原理,可是今天突然发现有些忘了.于是想记录下来. Repo机制 Repo是google官方为管理Android项目开发出来的一个软件. 我们先来看 ...
- sublime在高分辨率屏幕下,左侧边栏字体问题
因为新的笔记本是1920*1080分辨率的屏幕,在打开sublime的时候,侧边栏的文件夹名字会变得很小,虽然很清晰,但是太小了看起来很吃力, 如下图所示 网上找了很多的方法试了好久没有成功,一天闲下 ...
- Redis 起步(linux)
Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在CentOS 5.7上学习入门文章: 1.Redis简介 Redis是 一个key-value存储系统.和Memcached类似,但是解决 ...