推广 热搜: 收购ACF  石英加热管,  800  T型槽试验平台  求购ACF  深圳回收ACF  回收ACF  T型槽装配平台  求购日立ACF  T型槽地梁 

SQL今日一题(21):3个子查询移舟泊烟渚日暮客愁新的意思

   日期:2023-10-27     作者:虾壳可乐    浏览:56    评论:0    
核心提示:这是SQL今日一题的第21篇文章题目描述获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01',结果第一列给出员工的emp_no,第二列给出其m

这是SQL今日一题的第21篇文章

题目描述

获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01',
结果第一列给出员工的emp_no,
第二列给出其manager的manager_no,
第三列给出该员工当前的薪水emp_salary,
第四列给该员工对应的manager当前的薪水manager_salary

用到dept_emp表、dept_manager表和salaries表

dept_emp表

dept_manager表

salaries表
方法

selects_e.emp_no,
s_m.emp_noasmanager_no,
s_e.salaryasemp_salary,
s_m.salaryasmanager_salary
from
(
selectde.emp_no,
de.dept_no,
s.salary
fromdept_empde
innerjoinsalariessonde.emp_no=s.emp_no
wherede.emp_nonotin
(
selectemp_nofromdept_manager
)
ands.to_date='9999-01-01'
)ass_e,
(
selectdm.emp_no,
dm.dept_no,
s.salary
fromdept_managerdm
innerjoinsalariessondm.emp_no=s.emp_no
wheredm.to_date='9999-01-01'
ands.to_date='9999-01-01'
)ass_m
wheres_e.dept_no=s_m.dept_no
ands_e.salary>s_m.salary

这段SQL看着长,其实是我为了方便理顺逻辑调整了下格式而已,别被吓到。
1、首先我们要想知道员工薪水比manager薪水高的情况,就需要连接2个表,一个表是员工-薪水表,一个表是manager-薪水表,联立连个表以后,再将这两个表用联立,然后取员工-薪水表中的薪水大于manager-薪水表中薪水的值即可。

2、理顺思路我们就来联立表。首先用inner join连接dept_emp和salaries表,以emp_no为公共字段,注意这样连接以后是所有员工的信息,那我们要的是非manager员工的信息,所以里面再嵌套一个子查询,把manager员工的emp_no筛选出来,让连接的表的emp_no不等于manager的emp_no,得到的就是非manager员工的信息,别忘了给出where子句限制“当前”这个条件。查询出来的这个表命名为s_e

3、再来用inner join连接dept_manager和salaries表,以emp_no为公共字段,where子句限制“当前”这个条件,结果命名为s_m。这个连接很简单。

4、再将s_e和s_m连接起来,用where连接即可,公共字段为dept_no。同时给出另一个限制条件:s_e.salary > s_m.salary。

结果
知识点

子查询

  • 这题里嵌套了3个子查询

  • 注意子查询的用法,可以作为过滤条件放在where后,可以作为临时表放在from后,也可以作为一个字段值放在select语句中


猜你喜欢:
什么是好的数据指标:精益数据分析

数据会说谎的真实例子有哪些

有哪些值得推荐的数据可视化工具?(文末送书)

@ 作者:可乐
@ 公众号/知乎专栏/头条/简书:可乐的数据分析之路
@加个人微信:data_cola,备注:进群,拉你入 可乐的数据分析群 和各行各业的小伙伴交流探讨数据分析相关内容

微信公众号
个人微信号


原文链接:http://www.souke.org/news/show-227981.html,转载和复制请保留此链接。
以上就是关于SQL今日一题(21):3个子查询移舟泊烟渚日暮客愁新的意思全部的内容,关注我们,带您了解更多相关内容。
 
标签: 薪水 员工 联立
打赏
 
更多>同类资讯
0相关评论