打印本文 打印本文 关闭窗口 关闭窗口
Oracle分析函数学习笔记3
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2464  更新时间:2009/4/22 22:03:44  文章录入:mintao  责任编辑:mintao
sp;    JONES   2975         7075      10875       27.36      15825  29025      10.25
       SCOTT   3000        10075      10875       27.59      18825  29025      10.34
       SMITH    800        10875      10875        7.36      19625  29025       2.76

    30 ALLEN   1600         1600       9400       17.02      21225  29025       5.51
       BLAKE   2850         4450       9400       30.32      24075  29025       9.82
       JAMES    950         5400       9400       10.11      25025  29025       3.27
       MARTIN  1250         6650       9400        13.3      26275  29025       4.31
       TURNER  1500         8150       9400       15.96      27775  29025       5.17
       WARD    1250         9400       9400        13.3      29025  29025       4.31


已选择14行。


4.来一个综合的例子,求和规则有按部门分区的,有不分区的例子
SQL> select deptno,ename,sal,sum(sal) over (partition by deptno order by sal) dept_sum,
  2  sum(sal) over (order by deptno,sal) sum
  3  from emp;

    DEPTNO ENAME             SAL   DEPT_SUM        SUM
---------- ---------- ---------- ---------- ----------
        10 MILLER           1300       1300       1300
           CLARK            2450       3750       3750
           KING             5000       8750       8750

        20 SMITH             800        800       9550
           ADAMS            1100       1900      10650
           JONES            2975       4875      13625
           SCOTT            3000      10875      19625
           FORD             3000      10875      19625

        30 JAMES             950        950      20575
           WARD             1250       3450      23075
           MARTIN           1250       3450      23075
           TURNER           1500       4950      24575
           ALLEN            1600       6550      26175
           BLAKE            2850       9400      29025


已选择14行。

5.来一个逆序的,即部门从大到小排列,部门里各员工的薪水从高到低排列,累计和的规则不变。

SQL> select deptno,ename,sal,
  2  sum(sal) over (partition by deptno order by deptno desc,sal desc) dept_sum,
  3  sum(sal) over (order by deptno desc,sal desc) sum
  4  from emp;

    DEPTNO ENAME             SAL   DEPT_SUM        SUM
---------- ---------- ---------- ---------- ----------
        30 BLAKE            2850       2850       2850
           ALLEN            1600       4450       4450
           TURNER           1500       5950       5950
           WARD             1250       8450       8450
           MARTIN           1250       8450       8450
           JAMES             950       9400       9400

        20 SCOTT            3000       6000      15400
           FORD             3000       6000      15400
           JONES            2975       8975      18375
           ADAMS            1100      10075      19475
           SMITH             800      10875      20275

        10 KING             5000       5000      25275
           CLARK            2450       7450      27725
   &

上一页  [1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口