SELECT * FROM emp
where sal>avg(sal);
原因:where后面不能使用分组函数。
SELECT avg(sal) FROM emp;
(2073.214286)SELECT * FROM emp
where sal>2073.214286;
SELECT * FROM emp
where sal > (
SELECT * FROM emp
where sal>avg(sal)
);
SELECT deptno, avg(sal) as avgsal
from emp
group by deptno;
2、将以上的查询结果当做临时表t,让t表和salgrade s表连接。
SELECT t.*, s.grade
FROM (SELECT deptno, avg(sal) as avgsal
from emp
group by deptno) t
join salgrade s
on
t.avgsal between s.losal and s.hisal;
SELECT e.ename, e.sal, e.deptno, s.grade
from emp e
join salgrade s
on e.sal between s.losal and s.hisal;
2、看似会用到子查询,但是不会(因为需要的数据都有)。
SELECT e.deptno, avg(s.grade)
FROM emp e
join salgrade s
on
e.sal between s.losal and s.hisal
group by e.deptno;
SELECT e.ename,
(
select d.dname
from dept d
where e.deptno = d.deptno
) as dname
from emp e;
原文:https://www.cnblogs.com/yu011/p/13295015.html