SQL219

原本的思路如下:
#1、获取每个员工的薪水
#2、获取每个部门经理的薪水
#3、比较大小
select a.emp_no,b.manager_no,a.emp_salary,b.manager_salary
from
(select s.emp_no,salary emp_salary,dept_no
from salaries s inner join dept_emp de on s.emp_no=de.emp_no
where s.emp_no not in(
    select emp_no from dept_manager) )a
inner join  
(select s.emp_no manager_no,salary manager_salary,dept_no
from salaries s inner join dept_emp de on s.emp_no=de.emp_no
where s.emp_no in(
    select emp_no from dept_manager) )b
on a.dept_no=b.dept_no
where a.emp_salary>b.manager_salary

看了大佬的思路后发现自己想复杂了,不需要一定得把员工和经理区分清楚
将第一个第二个表分别和第三个表相连,就得到了员工和经理的薪水情况,这时候直接判断员工的薪水是否大于经理即可,因为员工表中虽然有经理的信息,但是经过比较大小后其相等的关系可以被直接筛选掉,同样能得到符合要求的结果,简易的思路如下:
  select a.emp_no,
       b.emp_no manager_no,
       c.salary emp_salary,
       d.salary manager_salary
  from dept_emp a inner join
       dept_manager b on a.dept_no = b.dept_no inner join 
       salaries c on a.emp_no = c.emp_no inner join 
       salaries d on b.emp_no = d.emp_no
 where c.salary > d.salary
全部评论

相关推荐

09-14 17:23
门头沟学院
故事和酒66:所以说副业很重要,程序员干到40岁,再怎么也赚300万了,吃吃利息也够活下去
点赞 评论 收藏
分享
程序员小白条:这简历除了学历确实没啥亮点,先找个中小厂再说吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务