OVER () 开窗函数

sqlserver的开窗函数分两大类,一类是聚合开窗函数,一类是排序开窗函数。

聚合类开窗函数聚合函数(列)over(选项),选项可以是partition by子句,但不可以是order by 子句。

over关键字表示把聚合函数当成聚合开窗函数而不是聚合函数。SQL标准允许将所有聚合函数用做聚合开窗函数。举个例子,开窗函数count(*) over() 对于查询结果的每一行都返回所有符合条件的行的条数。over关键字后的括号中还经常添加选项用于改变进行聚合运算的窗口范围。如果over关键字后的括号中的选项为空的话,则开窗函数会对结果集中的所有数据进行聚合运算。

select id,name,class,score,count(name) over(partition by class) from #students

OVER () 开窗函数_第1张图片
开窗函数的over关键字后面括号中可以使用partition by子句来定义行的分区来进行聚合运算。与group by 子句不同,partition by 子句创建的分区是独立于结果集的,创建的分区是进行聚合运算的,而不同的开窗函数所创建的分区互不干扰。举个例子,下面的sql语句用于显示每一个人员信息以及所在的班级和这个班级所拥有的人数。

你可能感兴趣的:(SQL)