关于相关子查询,有大佬可以帮忙解释一下吗
sql吧
全部回复
仅看楼主
level 2
71ttlemonster 楼主
想要筛选出employees 表中,工资超过他们所在部门平均工资的员工。
老师给到的查询如下图2,紫色字是我写的一些理解
我不懂的地方是,子循环中通过where筛选了同一部门,得出同一部门的工资均值。但外循环如何判定员工的部门?薪水大于筛选出来的这个部门的均值的员工可以是部门1也可以是部门2的哇。
这一块有点混乱。
2022年03月21日 15点03分 1
level 8
不是通过office_id进行关连了么。
你可以理解成,子查询是针对每一行数据的office_id都独立拿出来进行查询条件算employees 表中的平均工资。所以每一行的office_id都不同的,每个子查询得出的平均工资也不同,因为你是用office_id关连,你的哪一行子查询得出的必须是office_id符合你显示行的office_id的平均工资
2022年03月22日 01点03分 2
level 5
select 姓名
from(select 姓名,工资,avg(工资)over(partition by 部门) as 平均工资
from 表b )a
where a.工资>a.平均工资
2022年03月26日 11点03分 3
1