找出不同的部门b / w平均薪水

时间:2018-06-02 20:34:54

标签: sql

department table image

找出差异b / w avg部门薪水?

select avg(sal) as a from employee where dept = 'SC'
MINUS/-
select avg(sal) as b from employee where dept = 'DP'

这些sql查询似乎不起作用!

2 个答案:

答案 0 :(得分:1)

您可以使用CASE来获取所需的行:

DDL

create table t (
  Dept char(2),
  sal int
  )

  insert t (dept, sal)
  values('aa', 1234),
  ('aa', 1234),
  ('bb', 5432),
  ('bb', 4321)

答案

select avg(case when dept = 'aa' then sal else null end) - avg(case when dept = 'bb' then sal else null end)
from t

这只需要对您的表进行一次扫描,因此应该比子查询路径更快。

答案 1 :(得分:0)

MINUS是Oracle中的set minus运算符,在SQL Server中称为EXCEPT,并且似乎不存在于MySQL中(至少我找不到它)。但是你似乎不想要一个减去但是算术减去。尝试

SELECT (SELECT avg(sal)
               FROM employee
               WHERE dept = 'SC')
       -
       (SELECT avg(sal)
               FROM employee
               WHERE dept = 'DP');

它应该在MySQL和SQL Server中都有效。 (除非你完全随机标记,甚至不使用其中之一。)

相关问题