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
全部评论

相关推荐

OPSL:钱确实给的多,但是追责这一点比较迷惑…3个月具体如何计算呢?出勤天数30*3吗?还是21*3呢?万一中间学校有安排怎么办呢?这个得多问一问呀
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务