老师,问个问题

老师,问个问题

​#查询底薪超过公司平均底薪的员工信息
SELECT AVG(sal) from t_emp;

SELECT
e1.ename,e1.sal
FROM t_emp e1 JOIN (SELECT deptno,AVG(sal) as avg from t_emp) t
WHERE e1.deptno=t.deptno AND e1.sal>=t.avg;

为什么这样写,只能得到三个结果?

正在回答

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

1回答

同学你好,因为这样写多了个e1.deptno=t.deptno

(SELECT deptno,AVG(sal) as avg from t_emp)

该sql语句会把表中第一行的deptno的值显示出来

WHERE e1.deptno=t.deptno AND e1.sal>=t.avg;

这样写是将两个条件同时都满足的数据给展示出来,所以最后得到的是三个结果

祝学习愉快~

  • 阿山123 提问者 #1
    SELECT deptno,AVG(sal) FROM t_emp;

    为什么,这个最后显示的是deptno的值是20?

    SELECT 
    e1.ename,e1.sal,e1.deptno
    FROM t_emp e1 JOIN (SELECT deptno,AVG(sal) as avg from t_emp) t
    WHERE e1.deptno=t.deptno AND e1.sal>=t.avg;

    这个结果的deptno的值都是20?

    2021-04-20 17:32:05
  • 阿山123 提问者 #2
    e1.deptno=t.deptno

    这个是怎么把两个数据表之间联系起来的?感觉不懂都是因为不懂原理,知道原理就能理解了。

    2021-04-20 17:35:52
  • 好帮手慕阿园 回复 提问者 阿山123 #3

    同学你好

    1、deptno的结果是表中第一个数据的值

    2、如下sql语句查询到的结果作为一张临时表,也就是t

    SELECT deptno,AVG(sal) FROM t_emp;

    原表是e1表,通过join关键字将这两张表进行连接,查询的条件就是两张表的deptno相同,并且e1表中的sal值大于t表中的avg的值

    祝学习愉快~

    2021-04-20 18:34:08
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

在线咨询

领取优惠

免费试听

领取大纲

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