2021-01-15

开窗函数:
语法:开窗函数名([<字段名>]) over([partition by <分组字段>] [order by <排序字段> [desc]] [<
滑动窗口>])
partition by子句:按照指定字段进行分区,两个分区由边界分隔,开窗函数在不同的分区内分别
执行,在跨越分区边界时重新初始化。
order by子句:按照指定字段进行排序,开窗函数将按照排序后的记录顺序进行编号。可以和
partition by子句配合使用,也可以单独使用。
frame子句:当前分区的一个子集,用来定义子集的规则,通常用来作为滑动窗口使用
例子;

  1. 查询员工的平均工资: select *,avg(sal) over() as 平均工资 from emp;
  2. 查询每个部门员工的平均工资: ①聚合函数:select deptno,avg(sal) from emp group by deptno; ②开窗函数:select *, avg(sal) over(partition by deptno) as 部门平均工资 from emp; 注释:#当over中指定了分区,但是没有指定排序和滑动窗口范围时,默认计算的是分区内的所有行
  3. – 查询各部门入职先后顺序的累计工资
    select *,sum(sal) over(partition by deptno order by hiredate) as 累计工资 from emp;
    – 查询各部门入职先后顺序的前一位到后一位员工的平均工资

select *,avg(sal) over(partition by deptno order by hiredate rows between 1 preceding and 1 following ) as 平均工资 from emp;
#当over中指定了分区、排序和滑动窗口范围时,计算的是指定范围内的所有行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值