ITPub博客

首页 > 数据库 > Oracle > Sum ( ) Over ( )

Sum ( ) Over ( )

原创 Oracle 作者:eworm 时间:2007-06-15 11:06:31 0 删除 编辑

Sum(col_name) Over(partition by col_name_2,col_name_3,… order by col_name_i,col_name_j,…)

将由Partition By语句中指定的属性列进行分组,并依据Order By语句指定的属性列实现组内排序,对分组内由Sum指定的属性列求和。

该函数与单独的Sum()函数的区别在于:每一条记录求和的结果是由同一分组内所有该记录之前的记录中属性列的值求和得来的!

[@more@]

Analytic Example

The following example calculates, for each manager in the sample table hr.employees, a cumulative total of salaries of employees who answer to that manager that are equal to or less than the current salary. You can see that Raphaely and Cambrault have the same cumulative total. This is because Raphaely and Cambrault have the identical salaries, so Oracle adds together their salary values and applies the same cumulative total to both rows.

SELECT manager_id, last_name, salary,
   SUM(salary) OVER (PARTITION BY manager_id ORDER BY salary
   RANGE UNBOUNDED PRECEDING) l_csum
   FROM employees;

MANAGER_ID LAST_NAME           SALARY     L_CSUM
---------- --------------- ---------- ----------
       100 Mourgos               5800       5800
       100 Vollman               6500      12300
       100 Kaufling              7900      20200
       100 Weiss                 8000      28200
       100 Fripp                 8200      36400
       100 Zlotkey              10500      46900
       100 Raphaely             11000      68900
       100 Cambrault            11000      68900
       100 Errazuriz            12000      80900
.
.
.
       149 Taylor                8600      30200
       149 Hutton                8800      39000
       149 Abel                 11000      50000
       201 Fay                   6000       6000
       205 Gietz                 8300       8300
           King                 24000      24000

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7988176/viewspace-918943/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 惠州的乘务员
下一篇: REPLACE & TRANSLATE
请登录后发表评论 登录
全部评论
  • 博文量
    29
  • 访问量
    341610