标签归档:聚合函数

mssql sqlserver sum(1)、sum(2)、count(1)、count(8)、count(*)、统计函数应用区别简介


摘要:
下文着重讲述sum同count统计函数的区别,如下所示:
实验环境:sqlserver 2008 R2



一、sum count函数简介

sql统计函数中:
sum:对指定字段的表达式值进行求和计算
count:对指定表达式的行数进行计算

sum(1)等同于count函数,但是count函数效率更高



二、sum count函数举例说明
create table test(A int,B int,info varchar(10))
go

insert into test(A,B,info)values(5,6,’A’),
(2,4,’B’),(8,9,’B’),(3,1,’A’),(7,3,’C’),(1,2,null)
go

select info,sum(1) as [sum(1)],
count(*) as [count(*)],
count(6) as [count(6)],
count(8) as [count(8)],
count(info) as [count列],
sum(2) as [sum(2)],
sum(A) as [sum列值]
from test
GROUP BY info
/*
从以上的sql脚本中,可以看出
sum(1)同count(*) count(6) count(8) count(info)都是统计行数,返回结果一致
—sum(2)对每一行采用值2相加
count(6) count(8) 不会由于输入的值不同而得到不同的值
—count(列) 会过滤掉列值等于null的行
及count(列名);只统计列值中不会null的行数
*/
go
truncate table test
drop table test

mssql sqlserver count函数用法简介


摘要:
下文讲述count聚合函数的用法及简介


count函数功能简介:
返回集合中表达式的个数,返回值类型为int.
————————
count语法简介:
COUNT ( { [ ALL | DISTINCT ] expression } | * )
[ OVER ( [ partition_by_clause ] [ order_by_clause ] ) ]
参数:
ALL
集合中所有值参与聚合计算,缺省值为ALL。
distinct :
集合中唯一非null值进行聚合计数计算。
expression:
任何类型的表达式。
 
注意事项:
Remarks
COUNT(*) 返回集合中的行数, 包括 NULL 值和重复项。
COUNT (ALL expression) 计算集合中每行的 expression,然后返回非 null 值的行数。
COUNT (DISTINCT expression) 计算集合中每行的 expression,然后返回独一无二的非 null 值的行数。


count聚合函数,举例应用:

   create table test(info varchar(30))
go
insert into test (info)values('a'),
('b'),('a'),('c'),('d'),('d'),(null)
go

select count(info),count(distinct info)
 from test 
 go
 select info,count(info) 
 over(partition by info) as countInfo
 from test 
go
drop table test 

mssql sqlserver avg聚合函数使用说明


摘要:
下文主要讲述sqlserver中聚合函数avg的用法



avg 功能及语法说明

avg 功能:
返回一组数据的平均值,如果数据存在null,则会忽略此行
avg 语法说明:
AVG ([ALL|DISTINCT] expression )
OVER ([partition_by_clause ] order_by_clause )
———————————————————
参数说明:
all: 表达式中所有记录行参入聚合,缺省值
DISTINCT:avg 只对表达式中唯一值进行聚合
expression
可以转换为数值或数值类型的表达式(bit除外)
partition_by_clause:
集合分组函数
order_by_clause:
排序字段
———————————————–
返回值说明:
表达式为:tinyint 返回:int
表达式为:int 返回:int
表达式为:decimal 返回:decimal
表达式为:numeric 返回:numeric
表达式为:money 和 smallmoney 返回:money
表达式为:float 和 real 返回:float
———————————————–

注意事项:
1.avg中待计算的数据类型的总和超过数据类型的最大值,则会返回相应的错误信息。
2.avg会忽略null行



avg举例说明

 create table test(info varchar(80),qty decimal(18,2))
go

insert into test(info,qty)values('maomao365.com',12)
insert into test(info,qty)values('猫猫小屋',8)
insert into test(info,qty)values('a',8)
insert into test(info,qty)values('a',6)
insert into test(info,qty)values('c',null)
go

select avg(qty) from test  
select avg(qty) from test where qty is not null
---从以上两个结果相同,我们可以看出qty 等于null,则被提出avg计算 

select avg(all qty) from test 
select avg(distinct qty) from test 
---从以上两个结果,可以看出all 是默认值 distinct 关键会根据qty不同的值,进行计算

select info,avg(qty) over(partition by info ) as qty from test 
---分组后,对每个分组中的集合进行avg计算

go
truncate table test
drop table test 
mssql_sqlserver_avg_聚合函数用法简介

mssql_sqlserver_avg_聚合函数用法简介