hhuxyb 发表于 2011-12-23 03:43

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>&nbsp;employeeNo varchar2(20),</p><p>&nbsp;yearMonth varchar2(6),</p><p>&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,YEARMONTH<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SALARY<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MIN(SALARY) KEEP(DENSE_RANK FIRST ORDER BY YEARMONTH) OVER(PARTITION BY EMPLOYEENO) FIRST_SALARY -- 基比分析 salary/first_salary&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,LAG(SALARY, 1, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_SAL -- 环比分析,与上个月份进行比较&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,LAG(SALARY, 12, 0) OVER(PARTITION BY EMPLOYEENO ORDER BY YEARMONTH) AS PREV_12_SAL -- 同比分析,与上个年度相同月份进行比较&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(SALARY) OVER(PARTITION BY EMPLOYEENO, SUBSTR(YEARMONTH, 1, 4) ORDER BY YEARMONTH RANGE UNBOUNDED PRECEDING) LJ --累计值<br>&nbsp; FROM SALARYBYMONTH<br>&nbsp;ORDER BY EMPLOYEENO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,YEARMONTH</p></span>
页: [1]
查看完整版本: Oracle分析函数(同比,环比,累计,基比)