牛客网数据库SQL实战25—— 获取员工其当前的薪水比其manager当前薪水还高的相关信息
牛客网数据库SQL实战25—— 获取员工其当前的薪水比其manager当前薪水还高的相关信息
题目描述
获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date=‘9999-01-01’,
结果第一列给出员工的emp_no,
第二列给出其manager的manager_no,
第三列给出该员工当前的薪水emp_salary,
第四列给该员工对应的manager当前的薪水manager_salary
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `dept_manager` (
`dept_no` char(4) NOT NULL,
`emp_no` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
输入描述:
无
输出描述:
emp_no | manager_no | emp_salary | manager_salary |
---|---|---|---|
10001 | 10002 | 88958 | 72527 |
10009 | 10010 | 95409 | 94409 |
我的解答
select de.emp_no as emp_no,dm.emp_no as manager_no,s1.salary as emp_salary,s2.salary as manager_salary
from dept_emp de
left join dept_manager dm
on de.dept_no = dm.dept_no
left join salaries s1
on de.emp_no = s1.emp_no
left join salaries s2
on dm.emp_no = s2.emp_no
where de.to_date='9999-01-01'
and dm.to_date='9999-01-01'
and s1.to_date='9999-01-01'
and s2.to_date='9999-01-01'
and s1.salary > s2.salary
先根据dept_no 找出员工对应的manager的emp_no ,再分别通过员工表和管理员表的emp_no 找出对应的salary
我觉得最好的答案
本题主要思想是创建两张表(一张记录当前所有员工的工资,另一张只记录部门经理的工资)进行比较,具体思路如下:
- 先用INNER JOIN连接salaries和demp_emp,建立当前所有员工的工资记录sem
- 再用INNER JOIN连接salaries和demp_manager,建立当前所有员工的工资记录sdm
- 最后用限制条件sem.dept_no = sdm.dept_no AND sem.salary > sdm.salary找出同一部门中工资比经理高的员工,并根据题意依次输出emp_no、manager_no、emp_salary、manager_salary
SELECT sem.emp_no AS emp_no, sdm.emp_no AS manager_no, sem.salary AS emp_salary, sdm.salary AS manager_salary
FROM (SELECT s.salary, s.emp_no, de.dept_no FROM salaries s INNER JOIN dept_emp de
ON s.emp_no = de.emp_no AND s.to_date = '9999-01-01' ) AS sem,
(SELECT s.salary, s.emp_no, dm.dept_no FROM salaries s INNER JOIN dept_manager dm
ON s.emp_no = dm.emp_no AND s.to_date = '9999-01-01' ) AS sdm
WHERE sem.dept_no = sdm.dept_no AND sem.salary > sdm.salary
牛客网数据库SQL实战25—— 获取员工其当前的薪水比其manager当前薪水还高的相关信息相关推荐
- 牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。
牛客网数据库SQL实战14-- 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略. 题目描述 从titles表获取按照title进行分组,每组个数大于等于2,给出titl ...
- sql replace替换多个字符_牛客网数据库SQL实战详细剖析(4150)
文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程.具体题目可参考牛客网的SQL实战模块:https://www.nowcoder ...
- sql not exists用法_牛客网数据库SQL实战详细剖析(5160)(更新完结)
文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程. 具体题目可参考牛客网的SQL实战模块: https://www.nowcod ...
- 牛客网数据库SQL实战45—— 将titles_test表名修改为titles_2017
牛客网数据库SQL实战45-- 将titles_test表名修改为titles_2017 题目描述 将titles_test表名修改为titles_2017. CREATE TABLE IF NOT ...
- 牛客网数据库SQL实战44—— 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
牛客网数据库SQL实战44-- 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005 题目描述 将id=5以及emp_no=10001的行数据替换成id=5以及em ...
- 牛客网数据库SQL实战60—— 统计salary的累计和running_total
牛客网数据库SQL实战60-- 统计salary的累计和running_total 题目描述 按照salary的累计和running_total,其中running_total为前两个员工的salar ...
- 牛客网数据库SQL实战23—— 对所有员工的薪水按照salary进行按照1-N的排名
牛客网数据库SQL实战23-- 对所有员工的薪水按照salary进行按照1-N的排名 题目描述 对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相 ...
- 牛客网数据库SQL实战54——查找排除当前最大、最小salary之后的员工的平均工资avg_salary
牛客网数据库SQL实战54--查找排除当前最大.最小salary之后的员工的平均工资avg_salary 题目描述 查找排除当前最大.最小salary之后的员工的平均工资avg_salary. CRE ...
- 牛客网数据库SQL实战答案解析下篇
部分答案来自牛客网讨论分析 查找描述信息中包括robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部 SELECT c.name, COUNT(fc.film_id) ...
最新文章
- ndpi 流量协议分析
- linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
- spark 源码分析之十三 -- SerializerManager剖析
- 3_1 StrategyMode.cpp 策略模式
- java并发包系列---LockSupport
- c#事务的使用、示例及注意事项
- C++—— cin输入流详解
- 程序员斗图时最爱用哪些表情包?拿走不谢!
- Vue.js 学习笔记三,一些基础指令,v-bind,v-on
- 平衡二叉树(AVL Tree)
- mysql批量插入跟更新_mysql批量插入以及批量更新
- 陪学读书会——《定位》第十三章:品牌延伸何时有效
- 帝国cms 7.5 utf8集成百度编辑器完美集成版
- 传奇单职业1.76御天战神强势来袭
- 英语一大作文模板如何自己制作?
- stm32cubemx配置pwm
- Appserver的安装
- Docker三剑客之Docker compose多容器管理(nginx+haproxy实现负载均衡)
- IT 学习资源大汇总
- linux自带网络监控,在Linux中如何通过nload来监控网络使用情况