找出差异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查询似乎不起作用!
答案 0 :(得分:1)
您可以使用CASE
来获取所需的行:
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中都有效。 (除非你完全随机标记,甚至不使用其中之一。)