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 -- 環(huán)比分析,與上個(gè)月份進(jìn)行比較 ,LAG(SALARY, 12, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_12_SAL -- 同比分析,與上個(gè)年度相同月份進(jìn)行比較 ,SUM(SALARY) OVER(PARTITION BY EMPLOYEENO, SUBSTR(YEARMONTH, 1, 4) ORDER BY YEARMONTH RANGE UNBOUNDED PRECEDING) LJ --累計(jì)值 FROM SALARYBYMONTH ORDER BY EMPLOYEENO ,YEARMONTH
|