标签归档:over

mssql sqlserver 查询结果后添加合计列、平均列的方法分享


摘要:
下文通过举例的方式,讲述在查询结果列后添加合计的方法,如下所示:
实验环境:sqlserver 2008



实现思路:
使用开窗函数,在查询结果后加入相应的计算列

例:
计算此表的平均值、分组和、全部数据之和

   create table [maomao365]
(sort varchar(30) not null,qty int not null)
go

insert into [maomao365]
(sort,qty)values
('A',2),('B',3),('C',5),
('F',4),('G',5),('C',6),
('Y',7),('H',6),('D',8),
('A',5),('B',4),('E',6) 
go

select *,
sum(qty) over(partition by sort) as [分类小计],
avg(qty) over(partition by sort) as [分类平均值],
avg(qty) over() as [总平均值],
sum(qty) over() as [总计]
 from [maomao365]

go
truncate table [maomao365]
drop     table [maomao365]

mssql sqlserver 对不同群组对象进行聚合计算的方法分享


摘要:
下文讲述通过一条sql语句,采用over关键字同时对不同类型进行分组的方法,如下所示:
实验环境:sql server 2008 R2


当有一张明细表,我们需同时按照不同的规则,计算平均、计数、求和等聚合计算时,此时我们可以使用
over子句对数据进行操作。
例:

我们需获取一个学生成绩的 总平均分 各科平均分 学生单科成绩同平均分的差异,此时我们可以多次使用over子句,得出我们想要的结果,

    
    select 
     [课程名],
     [姓名],
     [成绩],
     AVG([成绩]) over () as [总平均分],
     AVG([成绩]) over (partition by  [课程名]) as [单科平均分],
     [成绩] - AVG([成绩]) over (partition by  [课程名]) as [平均分差异]  
     from [学生成绩表]

mssql sqlserver 同时对表数据进行排序和分组小计总计的方法分享


摘要:
下文分享同事对表数据,进行排序和分组小计,总计的方法分享,如下所示:

实现思路:
主要使用开窗函数over进行相关操作,如下所示:

	 create table test(keyId int identity,sort varchar(10),qty int)
	go
		insert into test(qty,sort)values
		(1,'a'),(2,'a'),(3,'b'),(8,'c'),(9,'c')

    go

      select *,sum(qty) over(partition by sort) as [分组小计]
       ,sum(qty) over()  as  [总计] from test 
       order by keyId desc 

      go
     truncate table test 
     drop     table test
	 
mssql_sqlserver_分组小计和总计的方法分享

mssql_sqlserver_分组小计和总计的方法分享