老师,关于第四道例题的疑问

老师,关于第四道例题的疑问

问题描述:

老师,我的SQL如下:

SQL:

SELECT e.empno,e.ename,e.sal,t.a,t.dname
FROM t_emp e JOIN (SELECT AVG(e1.sal) a,d1.deptno deptno,d1.dname dname FROM t_emp e1 JOIN t_dept d1 ON e1.deptno=d1.deptno GROUP BY d1.deptno) t
ON e.deptno=t.deptno
WHERE e.sal>=t.a;

查出来的结果也是正确的

http://img1.sycdn.imooc.com//climg/60aa00be0933a47b10900339.jpg

我想对查出来的结果进行个分组,根据部门,

SQL:

SELECT e.empno,e.ename,e.sal,t.a,t.dname
FROM t_emp e JOIN (SELECT AVG(e1.sal) a,d1.deptno deptno,d1.dname dname FROM t_emp e1 JOIN t_dept d1 ON e1.deptno=d1.deptno GROUP BY d1.deptno) t
ON e.deptno=t.deptno
GROUP BY t.deptno
WHERE e.sal>=t.a;

这里为什么就报错了呢

http://img1.sycdn.imooc.com//climg/60aa011c094e3eae18230473.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,sql语句语法有问题,where子句应该在group by子句的前边。如果是在分组查询后进行条件筛选,应该在group by子句后使用having子句进行筛选。

祝学习愉快~

  • cloudonthesun 提问者 #1

    老师我是想在第一个SQL查询结果的基础上对部门再分一个组,让相同部门的记录在相邻的行显示http://img1.sycdn.imooc.com//climg/60aa3631094bac7510940397.jpg

    应该怎么实现SQL呢

    2021-05-23 19:03:39
  • 好帮手慕阿满 回复 提问者 cloudonthesun #2

    同学你好,同学可以在后边加一个order by dname,通过dname进行排序,这样相同部门的记录就可以在相邻的行显示。

    祝学习愉快~

    2021-05-24 09:44:31
  • cloudonthesun 提问者 回复 好帮手慕阿满 #3

    谢谢老师,按照您的方法已经实现了

    http://img1.sycdn.imooc.com//climg/60ada6360976d56a11940415.jpg

    之前的那个解法,按照您说的我改了一下还是报错,老师能帮看看吗

    SELECT e.empno AS empno,e.ename AS ename,e.sal AS sal,t.a AS a,t.dname AS dname

    FROM t_emp e JOIN (SELECT AVG(e1.sal) a,d1.deptno deptno,d1.dname dname FROM t_emp e1 JOIN t_dept d1 ON e1.deptno=d1.deptno GROUP BY d1.deptno) t

    ON e.deptno=t.deptno

    WHERE e.sal>=t.a

    GROUP BY dname;


    http://img1.sycdn.imooc.com//climg/60ada7f40938eb9017960463.jpg


    2021-05-26 09:45:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师