在SQL SERVER里写很简单,就是关联几个表,统计出公司各部门的学历分布表,不知道在ORACLE里如何写?请教

解决方案 »

  1.   

    ??不太明白你的问题,ORACLE跟SQL里面语句基本差不多啊
      

  2.   

    可能oracle有更简单的写法吧  函数功能比较强大  LZ还是列举下表和数据  具体要达到什么效果  不然空说 都不知道在说啥
      

  3.   


    WITH t AS
      ( SELECT 'd001' AS deptcode,'大专' AS degreecode FROM dual
      UNION ALL
      SELECT 'd001','本科' FROM dual
      UNION ALL
      SELECT 'd002','本科' FROM dual
      UNION ALL
      SELECT 'd002','本科' FROM dual
      UNION ALL
      SELECT 'd003','研究生' FROM dual
      UNION ALL
      SELECT 'd004','博士' FROM dual
      )
    SELECT deptcode,
      "大专",
      "大专"/cnt * 100
      || '%',
      "本科",
      "本科"/cnt * 100
      || '%',
      "本科以上",
      "本科以上"/cnt * 100
      || '%'
    FROM
      (SELECT deptCode,
        SUM(DECODE(degreecode,'大专',1,0))        AS "大专",
        SUM(DECODE(degreecode,'本科',1,0))        AS "本科",
        SUM(DECODE(degreecode,'大专',0,'本科',0,1)) AS "本科以上",
        COUNT(1)                                AS cnt
      FROM t
      GROUP BY deptcode
      )--结果
    DEPTCODE 大专                     "大专"/CNT*100||'%'                         本科                     "本科"/CNT*100||'%'                         本科以上                   "本科以上"/CNT*100||'%'                       
    -------- ---------------------- ----------------------------------------- ---------------------- ----------------------------------------- ---------------------- ----------------------------------------- 
    d002     0                      0%                                        2                      100%                                      0                      0%                                        
    d003     0                      0%                                        0                      0%                                        1                      100%                                      
    d004     0                      0%                                        0                      0%                                        1                      100%                                      
    d001     1                      50%                                       1                      50%                                       0                      0%                                        
      

  4.   

     oracle也是关联两张表。没差别哦。LZ可以放心大胆的把SQL SERVER里面的语句ctrl+c过来的。