over partition by與group by 的區別

          Posted on 2009-06-29 19:04 林光炎 閱讀(1945) 評論(0)  編輯  收藏 所屬分類: ORACLE
          各位好!
          over partition by 與 group by 都是與統計類函數用,這兩個有什么區別呢?
          目前我只知道一個這樣的區別:
          比如有一張表saraly:CREATE TABLE SALARY AS SELECT 'A' NAME,10 DEPT,1000 SALARY FROM DUAL UNION ALL SELECT 'B',10,2000 FROM DUAL UNION ALL SELECT 'C' ,20,1500 FROM DUAL UNION ALL SELECT 'D',20,3000 FROM DUAL UNION ALL
          SELECT 'E',10,1000 FROM DUAL;
          NAME DEPT SALARY
          A         10     1000
          B         10     2000
          C         20     1500
          D         20     3000
          E         10     1000   
          用over partition by 我就可以查詢到每位員工本來的具體信息和它所在部門的總工資:
          select name,dept,salary,sum(salary) over (partition by dept) total_salary from salary;  
          name       dept         salary      tatal_salary
          A        10        1000        4000
          B        10        2000        4000
          E        10        1000        4000
          C        20        1500        4500
          D        20        3000        4500

          用goup by 就沒辦法做到這點,只能查詢到每個部門的總工資:
          select dept,sum(salary) total_salary from salary group by dept
          dept        total_salary
          10        4000
          20        4500
          另外over partion by 還可以做到查詢每位員工占部門總工資的百分比:
          select name,dept,salary,salary*100/sum(salary) over (partition by dept) percent from salary;

          name       dept         salary     percent
          A        10        1000        25
          B        10        2000        50
          E        10        1000        25
          C        20        1500        33.3333333333333
          D        20        3000        66.6666666666667
          用group by 也沒辦法做到這個.不知道我的理解正不正確,請各位朋友指點,特別是over partition by 與group by 的更多區別請各位一起分享,謝謝!

          20        4500

          posts - 104, comments - 33, trackbacks - 0, articles - 0

          Copyright © 林光炎

          主站蜘蛛池模板: 石台县| 通辽市| 平度市| 东兰县| 麻城市| 洪洞县| 惠来县| 东城区| 蚌埠市| 鄂托克旗| 都兰县| 崇礼县| 兴国县| 新和县| 白山市| 肥城市| 余干县| 嘉禾县| 长宁县| 仙桃市| 建宁县| 永春县| 武邑县| 深泽县| 乐山市| 汉川市| 临海市| 湘西| 桐庐县| 海淀区| 惠来县| 健康| 广水市| 山丹县| 沭阳县| 建始县| 岗巴县| 琼中| 凌海市| 苍山县| 永城市|