您现在的位置是:网站首页> 编程资料编程资料
oracle求同比,环比函数(LAG与LEAD)的详解_oracle_
2023-05-27
473人已围观
简介 oracle求同比,环比函数(LAG与LEAD)的详解_oracle_
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。
CREATE TABLE salaryByMonth
(
employeeNo varchar2(20),
yearMonth varchar2(6),
salary number
) ;
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
values (1, '200805', 500);
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
values (1, '200802', 150);
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
values (1, '200803', 200);
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
values (1, '200804', 300);
insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)
values (1, '200708', 100);
commit;
SELECT EMPLOYEENO
,YEARMONTH
,SALARY
,MIN(SALARY) KEEP(DENSE_RANK FIRST ORDER BY YEARMONTH) OVER(PARTITION BY EMPLOYEENO) FIRST_SALARY -- 基比分析 salary/first_salary
,LAG(SALARY, 1, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_SAL -- 环比分析,与上个月份进行比较
,LAG(SALARY, 12, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_12_SAL -- 同比分析,与上个年度相同月份进行比较
,SUM(SALARY) OVER(PARTITION BY EMPLOYEENO, SUBSTR(YEARMONTH, 1, 4) ORDER BY YEARMONTH RANGE UNBOUNDED PRECEDING) LJ --累计值
FROM SALARYBYMONTH
ORDER BY EMPLOYEENO
,YEARMONTH
相关内容
- oracle合并列的函数wm_concat的使用详解_oracle_
- oracle sql执行过程(流程图)_oracle_
- Oracle 查询优化的基本准则详解_oracle_
- 探讨:Oracle数据库查看一个进程是如何执行相关的实际SQL语句_oracle_
- oracle select执行顺序的详解_oracle_
- Oracle存储过程的编写经验与优化措施(分享)_oracle_
- 深入oracle特定信息排序的分析_oracle_
- oracle指定排序的方法详解_oracle_
- 基于oracle中锁的深入理解_oracle_
- 深入探讨:Oracle中如何查询正锁表的用户以及释放被锁的表的方法_oracle_
