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

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

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

一、知识点汇总

这题主要的知识点就是对join的应用,考察对不同连接的理解。
左,右,内,外全连接:
左连接:表1 left join 表2 on 表1.字段=表2.字段  (以表1为准,表2进行匹配)
右连接:表1 right join 表2 on 表1.字段=表2.字段  (以表2为准,表1进行匹配)
全连接:表1 union all 表2 (表1 和表2的列数必须一样多,union 去除重复项,union all 不剔除重复项)
内连接:表1 inner join 表2(取表1和表2相交部分)
外连接:表1 full outer join 表2 (取表1和表2不相交的部分)

二、题目理解

获取员工其当前的薪水比其manager当前薪水还高的相关信息
本质是对比员工薪资和经理薪资进行对比,分成两步即可完成题目。
1、首先需要建立员工薪资表和经理薪资表
2、剔除经理以及选择薪资高于其经理的员工
  • 剔除经理:员工表信息的员工ID<>经理信息表的员工ID 
  • 薪资比经理高的员工:员工表信息的薪水>经理信息表的薪水

三、解题步骤

STEP1:建立员工薪资表和经理薪资表
#员工薪资表
SELECT emp_no,dept_no,salary FROM dept_emp JOIN salaries USING(emp_no);
#经理薪资表 SELECT emp_no,dept_no,salary FROM dept_manager JOIN salaries USING(emp_no);


STEP2(完整代码):关联两张表,并剔除经理以及薪资低于其经理的员工
WITH t1 AS(SELECT emp_no,dept_no,salary FROM dept_emp JOIN salaries USING(emp_no)),#员工薪资表
t2 AS(SELECT emp_no,dept_no,salary FROM dept_manager JOIN salaries USING(emp_no)) #经理薪资表

SELECT t1.emp_no AS emp_no ,t2.emp_no AS manager_no,t1.salary AS emp_salary,t2.salary AS manager_salary
FROM t1 LEFT JOIN t2 USING(dept_no)
WHERE t1.emp_no<>t2.emp_no AND t1.salary>t2.salary;

全部评论

相关推荐

给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
07-21 12:41
已编辑
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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