数据库SQL实战
2017-08-02 18:13
246 查看
题目描述
获取所有部门当前manager的当前薪水情况,给出dept_no, emp_no以及salary,当前表示to_date='9999-01-01'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`));
输入描述:
无
输出描述:
dept_no | emp_no | salary |
---|---|---|
d001 | 10002 | 72527 |
d004 | 10004 | 74057 |
d003 | 10005 | 94692 |
d002 | 10006 | 43311 |
d006 | 10010 | 94409 |
select d.dept_no,d.emp_no,s.salary from salaries s join dept_manager d on s.emp_no = d.emp_no and d.to_date = '9999-01-01' and s.to_date = '9999-01-01'
1、先用INNER JOIN连接两张表,限制条件是两张表的emp_no相同,即d.emp_no = s.emp_no,并且将salaries用别名s代替,dept_manager用别名d代替
2、根据题意,要获取当前manager的当前salary情况,再加上限制条件d.to_date = '9999-01-01' AND s.to_date = '9999-01-01'即可(因为同一emp_no在salaries表中对应多条涨薪记录,而当s.to_date = '9999-01-01'时是他当上manager时的记录)
使用where同样也可进行查询:
select d.dept_no,d.emp_no,s.salary from salaries s, dept_manager d where s.emp_no = d.emp_no and d.to_date = '9999-01-01' and s.to_date = '9999-01-01'
相关文章推荐
- 数据库编程实战:Oracle PL/SQL入门之案例实践
- 数据库SQL实战(一)
- 数据库SQL实战
- 数据库SQL实战
- 牛客:数据库SQL实战(一)查询入职最晚的员工的所有信息
- 数据库SQL实战-答案解析(15-20)
- 【软件自动化测试-QTP实战技能 3】== 数据库检查点手动SQL写法
- 实战SQL 2008 数据库镜像功能
- <实战>oracle 数据库的sql语句中 ‘&’ 符号的处理
- Gradle实战:执行sql操作hive数据库
- 4000 【数据库SQL实战】查找所有员工入职时候的薪水情况
- 数据库SQL实战
- 数据库SQL实战
- ProxySQL+Mysql实现数据库读写分离实战
- 数据库SQL实战-答案解析(1-15)
- 数据库SQL实战-查找最晚入职员工
- 数据库技能实战进阶之常用结构化sql语句(上)
- 【数据库SQL实战】获取所有部门当前manager的当前薪水情况
- 数据库SQL实战练习(上)
- 数据库SQL实战