mssql sqlserver 数据分组后取平均值的方法分享


摘要:
下文讲述分组数据取平均值的方法,如下所示:
实验环境:sql server 2008 R2


下文讲述,取一张学生成绩表中,
并为每个学生成绩后面加上”个人平均分”及”全班平均分”。

实现思路:
使用over开窗函数,对数据进行分组,并加上聚合计算函数。

create table [maomao365.com]
(keChengName nvarchar(30),
 chengJi     decimal(18,1),
 name        nvarchar(10)
 )
 go
 insert into [maomao365.com]
 (keChengName,chengJi,name)values
 ('语文',98,'张三'),
 ('数学',92,'张三'),
 ('语文',90,'李四'),
 ('数学',100,'李四'),
 ('语文',83,'王二'),
 ('数学',98,'王二')
 go
 
 --方式:使用开窗函数计算个人平均分及班级平均分
  
 
  select avg(chengJi)
   over(partition by name) as [个人平均分],
   avg(chengJi)
   over() as [班级平均分],
   * from [maomao365.com]   
   go
  
 truncate table [maomao365.com]
 drop table [maomao365.com]