mssql sqlserver over(partition by)同group by之间的区别


摘要:
下文通过举例的方式分析 over(partition by)同group by 之间的区别,如下所示:
实验环境:sqlserver 2008 R2



一、over(partition by)同group by功能简介

over 函数 配合聚合函数(max、min、sum、avg、count等)或row_number等函数,可以在不改变原显示数据的情况下,新增一列作为聚合函数的计算值;
group by 子句只能同聚合函数(max、min、sum、avg、count),对相关列进行分组,只能展示出分组列和聚合列的数据。
over(partition by)比group by 具有更多的用武之地,具有更高级的功能
——————————————————————

二、over(partition by)同group by举例说明

  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 

select sort ,sum(qty) from test 
group by sort 
go
truncate table test 
drop     table test 
mssql_sqlserver_over同groupby对比

mssql_sqlserver_over同groupby对比