Oracle分析函数(同比,环比,累计,基比)
<span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Arial; line-height: 26px; "><p>CREATE TABLE salaryByMonth</p><p>(</p><p> employeeNo varchar2(20),</p><p> yearMonth varchar2(6),</p><p> salary number</p><p>) ;<br>insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)<br>values (1, '200805', 500);<br>insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)<br>values (1, '200802', 150);<br>insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)<br>values (1, '200803', 200);<br>insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)<br>values (1, '200804', 300);<br>insert into SALARYBYMONTH (EMPLOYEENO, YEARMONTH, SALARY)<br>values (1, '200708', 100);<br>commit;</p><p><br>SELECT EMPLOYEENO<br> ,YEARMONTH<br> ,SALARY<br> ,MIN(SALARY) KEEP(DENSE_RANK FIRST ORDER BY YEARMONTH) OVER(PARTITION BY EMPLOYEENO) FIRST_SALARY -- 基比分析 salary/first_salary <br> ,LAG(SALARY, 1, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_SAL -- 环比分析,与上个月份进行比较 <br> ,LAG(SALARY, 12, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_12_SAL -- 同比分析,与上个年度相同月份进行比较 <br> ,SUM(SALARY) OVER(PARTITION BY EMPLOYEENO, SUBSTR(YEARMONTH, 1, 4) ORDER BY YEARMONTH RANGE UNBOUNDED PRECEDING) LJ --累计值<br> FROM SALARYBYMONTH<br> ORDER BY EMPLOYEENO<br> ,YEARMONTH</p></span>
页:
[1]