2020-12-23
阅读量:
839
sql开窗函数简介
与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是普通聚合函数每组只能返回一个值,而开窗函数可以每组返回多个值。
比如我们想查询每个工资小于5000元的员工信息(城市以及年龄),并且在每行中都显示所有工资小于5000元的员工个数,执行下面的SQL语句
select t.fcity, t.fage, count(*) over() from person t where t.fsalary < 5000
看下执行效果:
可以看到这个SQL语句与我们第一个实验不同的是我们在count(*)后面加了一个over关键字。
开窗函数的调用格式为:
函数名(列)over(选项)
over关键字表示把函数当成开窗函数而不是聚合函数,SQL标准允许将所有聚合函数用做开窗函数,使用over关键字来区分这两种用法。
在上面的例子中,开窗函数count(*) over()对于查询结果的每一行都返回所有符合条件的行的条数,over关键字后的括号中还经常添加选项用以改变进行聚合运算的窗口范围(后面博客会持续更新),如果over关键字后的括号中选项为空,则开窗函数会对结果集中的所有行进行聚合运算。当然,不只是count(*) over,max(fage) over(),min(fage) over()都可以。






评论(0)


暂无数据
推荐帖子
0条评论
0条评论
0条评论