牛客网数据库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

我觉得最好的答案

本题主要思想是创建两张表(一张记录当前所有员工的工资,另一张只记录部门经理的工资)进行比较,具体思路如下:

  1. 先用INNER JOIN连接salaries和demp_emp,建立当前所有员工的工资记录sem
  2. 再用INNER JOIN连接salaries和demp_manager,建立当前所有员工的工资记录sdm
  3. 最后用限制条件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当前薪水还高的相关信息相关推荐

  1. 牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。

    牛客网数据库SQL实战14-- 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略. 题目描述 从titles表获取按照title进行分组,每组个数大于等于2,给出titl ...

  2. sql replace替换多个字符_牛客网数据库SQL实战详细剖析(4150)

    文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程.具体题目可参考牛客网的SQL实战模块:https://www.nowcoder ...

  3. sql not exists用法_牛客网数据库SQL实战详细剖析(5160)(更新完结)

    文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程. 具体题目可参考牛客网的SQL实战模块: https://www.nowcod ...

  4. 牛客网数据库SQL实战45—— 将titles_test表名修改为titles_2017

    牛客网数据库SQL实战45-- 将titles_test表名修改为titles_2017 题目描述 将titles_test表名修改为titles_2017. CREATE TABLE IF NOT ...

  5. 牛客网数据库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 ...

  6. 牛客网数据库SQL实战60—— 统计salary的累计和running_total

    牛客网数据库SQL实战60-- 统计salary的累计和running_total 题目描述 按照salary的累计和running_total,其中running_total为前两个员工的salar ...

  7. 牛客网数据库SQL实战23—— 对所有员工的薪水按照salary进行按照1-N的排名

    牛客网数据库SQL实战23-- 对所有员工的薪水按照salary进行按照1-N的排名 题目描述 对所有员工的当前(to_date='9999-01-01')薪水按照salary进行按照1-N的排名,相 ...

  8. 牛客网数据库SQL实战54——查找排除当前最大、最小salary之后的员工的平均工资avg_salary

    牛客网数据库SQL实战54--查找排除当前最大.最小salary之后的员工的平均工资avg_salary 题目描述 查找排除当前最大.最小salary之后的员工的平均工资avg_salary. CRE ...

  9. 牛客网数据库SQL实战答案解析下篇

    部分答案来自牛客网讨论分析 查找描述信息中包括robot的电影对应的分类名称以及电影数目,而且还需要该分类对应电影数量>=5部 SELECT c.name, COUNT(fc.film_id) ...

最新文章

  1. ndpi 流量协议分析
  2. linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
  3. spark 源码分析之十三 -- SerializerManager剖析
  4. 3_1 StrategyMode.cpp 策略模式
  5. java并发包系列---LockSupport
  6. c#事务的使用、示例及注意事项
  7. C++—— cin输入流详解
  8. 程序员斗图时最爱用哪些表情包?拿走不谢!
  9. Vue.js 学习笔记三,一些基础指令,v-bind,v-on
  10. 平衡二叉树(AVL Tree)
  11. mysql批量插入跟更新_mysql批量插入以及批量更新
  12. 陪学读书会——《定位》第十三章:品牌延伸何时有效
  13. 帝国cms 7.5 utf8集成百度编辑器完美集成版
  14. 传奇单职业1.76御天战神强势来袭
  15. 英语一大作文模板如何自己制作?
  16. stm32cubemx配置pwm
  17. Appserver的安装
  18. Docker三剑客之Docker compose多容器管理(nginx+haproxy实现负载均衡)
  19. IT 学习资源大汇总
  20. linux自带网络监控,在Linux中如何通过nload来监控网络使用情况

热门文章

  1. 华山全敏还是全劲_一梦江湖华山加点_一梦江湖华山加点推荐2020_攻略
  2. 小猿圈Java学习分享2019Java面试题
  3. JS:二叉树(2)——递归操作节点、构造二叉树
  4. java手机验证码登录代码_java web实现手机短信验证码登录实例
  5. 使用扫码枪(二维码,条码)使用键盘钩子获取扫码数据
  6. 使用Qt Designer制作软件的图形界面
  7. 国家基金申请书撰写的共性问题(转)
  8. 图片批量上传并限制图片大小
  9. 华为matepad 鸿蒙,鸿蒙阵营再添一员猛将!华为全新平板曝光
  10. 百度地图渲染wkt格式网格数据