数据库SQL实战11_获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date=‘9999-01-01‘, 结果第一列给出员工的emp_no, 第二列给出其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`));
- 我的解答
select de.emp_no,dm.emp_no as manager_no,
(select salary from salaries where emp_no=de.emp_no) as emp_salary,
(select salary from salaries where emp_no=dm.emp_no) as manager_salary
from dept_emp de
left join dept_manager dm on de.dept_no=dm.dept_no
left join salaries s on de.emp_no=s.emp_no
where s.to_date='9999-01-01' and
emp_salary>manager_salary
错误
- 解答
思路1
**查询员工当前工资表 emp_sal**
select de.emp_no,de.dept_no,s1.salary as emp_salaryfrom dept_emp de,salaries s1where de.emp_no=s1.emp_noand s1.to_date='9999-01-01'and de.to_date='9999-01-01'
**查询经理当前工资表mag_sal**select dm.emp_no as manager_no,dm.dept_no,s2.salary as manager_salaryfrom dept_manager dm,salaries s2where dm.emp_no=s2.emp_noand s2.to_date='9999-01-01'and dm.to_date='9999-01-01'**联结表emp_sal和表mag_sal,连接条件部门编号相等,要求:员工工资>经理工资**
select emp_sal.emp_no,mag_sal.manager_no,
emp_sal.emp_salary,mag_sal.manager_salary
from (select de.emp_no,de.dept_no,s1.salary as emp_salaryfrom dept_emp de,salaries s1where de.emp_no=s1.emp_noand s1.to_date='9999-01-01'and de.to_date='9999-01-01'
)as emp_sal
inner join(select dm.emp_no as manager_no,dm.dept_no,s2.salary as manager_salaryfrom dept_manager dm,salaries s2where dm.emp_no=s2.emp_noand s2.to_date='9999-01-01'and dm.to_date='9999-01-01'
)as mag_sal
on emp_sal.dept_no=mag_sal.dept_no
where mag_sal.manager_salary<emp_sal.emp_salary;
思路2
select de.emp_no,dm.emp_no as manager_no,
s1.salary as emp_salary,s2.salary as manager_salary
from dept_emp de,dept_manager dm,salaries s1,salaries s2
where de.dept_no=dm.dept_no
and de.emp_no=s1.emp_no
and dm.emp_no=s2.emp_no
and s1.salary>s2.salary
and s2.to_date='9999-01-01'
and s1.to_date='9999-01-01';
- 尝试
思路2:中文思路
查询
员工表.员工号 + 经理表 .员工号 + 工资表s1.员工工资 + 工资表s2.经理工资
从
员工表,经理表,工资表s1,工资表s2
条件
员工表和经理表部门号相等
并且
员工表和工资表s1员工号相同
并且
经理表和工资表s2员工号相同
并且
s1.salary>s2.salary
并且
日期符合
select de.emp_no,dm.emp_no as manager_no,
s1.salary as emp_salary ,s2.salary as manager_salary
from dept_emp de,dept_manager dm,salaries s1,salaries s2
where de.dept_no=dm.dept_no
and de.emp_no=s1.emp_no
and dm.emp_no=s2.emp_no
and s1.salary>s2.salary
and s1.to_date='9999-01-01'
and s2.to_date='9999-01-01'
思路1:中文思路
查询
虚表1.员工号,虚表2.经理号,虚表1.员工工资,虚表2.经理工资
从
虚表1(包含员工的部门号,员工号,工资字段,日期限制) 内连接
虚表2(包含经历的部门号,员工号,工资字段,日期限制)
on
虚表1的部门号和虚表2的部门号相同
并且
员工工资>经理工资
select emp_s.emp_no,mag_s.emp_no,emp_s.emp_salary,mag_s.manager_salary
from(select de.emp_no,de.dept_no,s1.salary as emp_salaryfrom dept_emp de,salaries s1where de.emp_no=s1.emp_noand de.to_date='9999-01-01' and s1.to_date='9999-01-01') as emp_s
inner join (select dm.emp_no,dm.dept_no,s2.salary as manager_salaryfrom dept_manager dm,salaries s2where dm.emp_no=s2.emp_noand dm.to_date='9999-01-01'and s2.to_date='9999-01-01') as mag_s
on emp_s.dept_no=mag_s.dept_no
where emp_s.emp_salary>mag_s.manager_salary
数据库SQL实战11_获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date=‘9999-01-01‘, 结果第一列给出员工的emp_no, 第二列给出其manager相关推荐
- 获取员工其当前的薪水比其manager的薪资还高的相关信息
题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01', 结果第一列给出员工的emp_no, 第二列给出其manager的manage ...
- 牛客网数据库SQL实战25—— 获取员工其当前的薪水比其manager当前薪水还高的相关信息
牛客网数据库SQL实战25-- 获取员工其当前的薪水比其manager当前薪水还高的相关信息 题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999 ...
- 牛客 数据库SQL实战 获取员工其当前的薪水比其manager当前薪水还高的相关信息
题目描述:\color{blue}题目描述:题目描述: 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01', 结果第一列给出员工的emp_n ...
- 数据库SQL实战-- 获取员工其当前的薪水比其manager当前薪水还高的相关信息
时间限制:1秒 空间限制:32768K 热度指数:23267 题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01', 结果第一列给出 ...
- 数据库SQL实战(牛客网):获取员工其当前的薪水比其manager当前薪水还高的相关信息
获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01', 结果第一列给出员工的emp_no, 第二列给出其manager的manager_no, ...
- 【数据库SQL实战】获取员工其当前的薪水比其manager当前薪水还高的相关信息
https://www.nowcoder.com/practice/f858d74a030e48da8e0f69e21be63bef?tpId=82&tqId=29777&rp=0&a ...
- 数据库SQL实践25:获取员工其当前的薪水比其manager当前薪水还高的相关信息
思想: 题目要求获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01', 结果第一列给出员工的emp_no, 第二列给出其manager的man ...
- (困难)SQL练习25:获取员工其当前的薪水比其manager当前薪水还高的相关信息
SQL练习25:获取员工其当前的薪水比其manager当前薪水还高的相关信息 题目描述 考察知识点 解题思路 题目描述 有一个,部门关系表 dept_emp 简况如下: 有一个部门经理表 dept_m ...
- SQL(16)--获取员工当前薪水比其manager薪水还高的相关信息
题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999-01-01', 结果第一列给出员工的emp_no, 第二列给出其manager的manage ...
最新文章
- 迪杰斯特拉算法。简单理解。内含示例
- 逆转衰老!“70岁”小鼠经过数月治疗,肾脏皮肤血液细胞重返“年轻态”
- Unity钢铁以及玻璃材质的选择
- R语言应用实战系列(六)-基于R的人工神经网络ANN算法和KNN算法(k-Nearest Neighbour)
- cglib_cglib:缺少的手册
- oracle 添加字段
- VSS 2005 配置简明手册
- iOS底层探索之多线程(二)—线程和锁
- 如何在fedora安装Telegram
- 用c语言实现数字时钟课程设计,基于C51单片机的数字时钟课程设计(C语言,带闹钟).doc...
- hp1015驱动64位_惠普1015打印机驱动下载|惠普 1015驱动电脑版 - 极光下载站
- 牢记公式,ardupilot EKF2就是纸老虎(五)!
- tplink软件升级有用吗_tplink路由器固件更新的方法
- 在文章中主标题和副标题的格式问题
- 微型机器人正迎来发展,三大领域应用大有可为
- 虚拟主播怎么做出来的?今日安利:AI虚拟人物怎么弄?
- 2020-08-22
- [转]把自己从一个疯狂下载者变成一个学习者
- 云私钥MCK,云平台、公有云、服务器数据安全
- 微信小程序(七)注册