Oracle emp表  求JOB为MANAGER的平均工资与JOB为SALESMAN的平均工资的差
一条语句写下来   小弟急  各位达人帮帮忙

解决方案 »

  1.   

    select avg(a.sal)-avg(b.sal) from emp a,emp b
    where a.job='MANAGER' and b.job='SALESMAN';
      

  2.   

    select a.msal - b.ssal from(
    (select avg(sal) msal from emp where job = 'MANAGER')a
    (select avg(sal) ssal from emp where job = 'SALESMAN')b
    );
      

  3.   

    参考:
    select b.empname,b.salary - a.avg_sal
    from 
    (select avg(salary) avg_sal from emp  where job='MANAGER') a,
    (select * from emp  where job='MANAGER') b
      

  4.   

    sorryselect a.msal - b.ssal from
    (select avg(sal) msal from emp where job = 'MANAGER') a,
    (select avg(sal) ssal from emp where job = 'SALESMAN')b
    ;
      

  5.   

    select a.msal - b.ssal from
    (select avg(sal) msal from emp where job = 'MANAGER') a,
    (select avg(sal) ssal from emp where job = 'SALESMAN')b
      

  6.   

    SELECT (SELECT AVG(sal) msal FROM emp WHERE job = 'MANAGER') -
           (SELECT AVG(sal) ssal FROM emp WHERE job = 'SALESMAN')
      FROM dual;
      

  7.   

    select max(sal) -min(sal) from 
    select agv(sal) as sal from emp where job in('MANAGER','SALESMAN') group by job) a;
      

  8.   

    这样:
    select max(sal) -min(sal) from  
    (select avg(sal) as sal from emp where job in('MANAGER','SALESMAN') group by job);
    很好的方法
      

  9.   

    select avg(decode(t.job,'MANAGER',t.sal,null)) - 
           avg(decode(t.job,'SALESMAN',t.sal,null)) 
      from emp t 
     where t.job in ('MANAGER','SALESMAN') 
      

  10.   

    (1)
    select (select avg(sal) from emp where job = 'MANAGER') -
           (select avg(sal) from emp where job = 'SALESMAN')
      from dual
    (2)
    select max(sal) - min(sal)
      from (select avg(sal) as sal
              from emp
             where job in ('MANAGER', 'SALESMAN')
             group by job);
      

  11.   

    引用六楼:
    SELECT (SELECT AVG(sal) msal FROM emp WHERE job = 'MANAGER') -
           (SELECT AVG(sal) ssal FROM emp WHERE job = 'SALESMAN')
      FROM dual;