题解 | #获取员工其当前的薪水比其manager当前薪水还高的相关信息#

获取员工其当前的薪水比其manager当前薪水还高的相关信息

http://www.nowcoder.com/practice/f858d74a030e48da8e0f69e21be63bef

解题思路

#对新的拼接组合表进行查询,获取结果........第六步
select  a1.emp_no,a2.emp_no as manager_no,a1.salary as emp_salary,a2.salary as manager_salary
from 
(
#查询员工的emp_no,salary,dept_no.......第二步
select e.emp_no,s.salary,e.dept_no
from(
	#判断哪个是员工,并查询员工的所有信息.......第一步  
	select * from dept_emp
	where emp_no not in (select emp_no from dept_manager)) as e
	inner join salaries as s
	on s.emp_no = e.emp_no
	where s.to_date='9999-01-01'

) as a1

#链接新的员工信息表a1和领导信息表a2......第五步
inner join
(
#查询领导的emp_no,salary,dept_no......第四步
select e2.emp_no,s.salary,e2.dept_no
from(
	#判断哪个是领导,并获取领导的所有信息......第三步
	select * from dept_emp
	where emp_no in (select emp_no from dept_manager)) as e2
	inner join salaries as s
	on s.emp_no = e2.emp_no
	where s.to_date='9999-01-01'

) as a2

on a1.dept_no = a2.dept_no
having emp_salary > manager_salary

实现代码

select  a1.emp_no,a2.emp_no as manager_no,a1.salary as emp_salary,a2.salary as manager_salary
from 
(
	select e.emp_no,s.salary,e.dept_no
from(
select * from dept_emp
where emp_no not in (select emp_no from dept_manager)) as e
inner join salaries as s
on s.emp_no = e.emp_no
where s.to_date='9999-01-01'

) as a1

inner join
(

select e2.emp_no,s.salary,e2.dept_no
from(
select * from dept_emp
where emp_no in (select emp_no from dept_manager)) as e2
inner join salaries as s
on s.emp_no = e2.emp_no
where s.to_date='9999-01-01'

) as a2

on a1.dept_no = a2.dept_no
having emp_salary > manager_salary



全部评论

相关推荐

03-04 07:14
门头沟学院 C++
后测速成辅导一两个月...:老板:都给工作机会了还想要工资,哪来这么多好事
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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