over partition by與group by 的區別

          Posted on 2009-06-29 19:04 林光炎 閱讀(1953) 評論(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 © 林光炎

          主站蜘蛛池模板: 宁陵县| 大埔县| 冷水江市| 抚州市| 如东县| 定陶县| 富阳市| 南通市| 报价| 化州市| 平山县| 苍梧县| 呼伦贝尔市| 江城| 梨树县| 临海市| 梁平县| 定结县| 元江| 宁强县| 桐梓县| 得荣县| 兴义市| 沂南县| 五寨县| 松潘县| 株洲县| 濮阳市| 寿阳县| 达日县| 康定县| 五常市| 永宁县| 陆河县| 阿克陶县| 永城市| 工布江达县| 新昌县| 麻栗坡县| 山阴县| 七台河市|