题解-牛客网-SQL-(SQL25) 获取员工其当前的薪水比其manager当前薪水还高的相关信息

1. 题目描述

1.1 输入

有一个部门关系表dept_emp简况如下:
dept_emp表简况
有一个部门经理表dept_manager简况如下:
dept_manager表简况
有一个薪水表salaries简况如下:
salaries表简况

1.2 输出

获取员工其当前的薪水比其manager当前薪水还高的相关信息,
第一列给出员工的emp_no,
第二列给出其manager的manager_no,
第三列给出该员工当前的薪水emp_salary,
第四列给该员工对应的manager当前的薪水manager_salary
以上例子输出如下:
SQL查询期望的输出结果

2. 题目分析及解答

2.1 题目分析

该题旨在考查多表连接查询。对于这类题,正确的思路应当是将问题分解成若干部分依次解决,即:应考虑需要得到怎样的中间结果,然后再怎样由这个中间结果得到最终的输出结果,而不是试图一次性解决整个问题。对于该题,首先应通过关联dept_emp表和dept_manager表得到各部门中非manager的员工和他们对应的manager,再在此基础上关联salaries表,以得到符合查询要求的薪水信息。:该题不止这一种思路,后续可能会补充其他解法。但本人认为这种思路是一个比较通用的解题模式,虽然未必是最简洁的。

2.2 详细解答

根据题目分析可直接写出相应的SQL查询语句:

SELECT
	de.emp_no,
	dm.emp_no AS manager_no,
	( SELECT s.salary FROM salaries AS s WHERE s.emp_no = de.emp_no AND s.to_date = '9999-01-01' ) AS emp_salary,
	( SELECT s.salary FROM salaries AS s WHERE s.emp_no = dm.emp_no AND s.to_date = '9999-01-01' ) AS manager_salary 
FROM
	dept_emp AS de
	JOIN dept_manager AS dm ON de.dept_no = dm.dept_no 
	AND de.emp_no != dm.emp_no
	JOIN salaries AS s ON de.emp_no = s.emp_no 
	AND emp_salary > manager_salary;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值