ORACLE的SQL练习---8. 窗口函数OVER()

Over()窗口函数最常见的搭配有以下几种:rank(),dense_rank(),row_number() + over(partition by … order by …) 排名sum(),avg(),count()聚合函数+over(partition by … order by …)max(),min()+over(partition by … order by …) 最大值、最小值first_value(),last_value() + over(partition by … order
摘要由CSDN通过智能技术生成

Over()窗口函数最常见的搭配有以下几种:

  1. rank(),dense_rank(),row_number() + over(partition by … order by …) 排名
  2. sum(),avg(),count()聚合函数+over(partition by … order by …)
  3. max(),min()+over(partition by … order by …) 最大值、最小值
  4. first_value(),last_value() + over(partition by … order by …) 第一条、最后一条记录
  5. lag(),lead() + over(partition by … order by …) 偏移量

其中的partition by 是分组,order by 是排序。这里的分组与group by 是不同的,最明显的是group by会影响返回结果的条数,但是partition by 不会。

案例用到的建表语句:

create table LX_05_SALARY
(
  id              NUMBER,
  department_name VARCHAR2(100),
  sal             NUMBER,
  pay_date        DATE
)

插数语句:

insert into lx_05_salary (ID, DEPARTMENT_NAME, SAL, PAY_DATE)
values (1, 'A部门', 80000, to_date('10-01-2020', 'dd-mm-yyyy'));

insert into lx_05_salary (ID, DEPARTMENT_NAME, SAL, PAY_DATE)
values (2, 'B部门', 60000, to_date('10-01-2020', 'dd-mm-yyyy'));

insert into lx_05_salary (ID, DEPARTMENT_NAME, SAL, PAY_DATE)
values (3, 'C部门', 100000, to_date('10-01-2020', 'dd-mm-yyyy'));

insert into lx_05_salary (ID, DEPARTMENT_NAME, SAL, PAY_DATE)
values (4, 'A部门', 70000, to_date('10-12-2019', 'dd-mm-yyyy'));

insert into lx_05_salary (ID, DEPARTMENT_NAME, SAL, PAY_DATE)
values (5, 'B部门', 60000, to_date('10-12-2019', 'dd-mm-yyyy'));

insert into lx_05_salary (ID, DEPARTMENT_NAME, SAL, PAY_DATE)
values (6, 'C部门&
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值