牛客网 SQL实战 6 查找所有员工入职时候的薪水情况#
目录#
1. 题目描述#
1.1. Time Limit#
C/C++ 1秒,其他语言2秒
1.2. Memory Limit#
C/C++ 32M,其他语言64M
1.3. Problem Description#
查找所有员工入职时候的薪水情况,给出emp_no以及salary, 并按照emp_no进行逆序(请注意,一个员工可能有多次涨薪的情况)
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_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`));
1.4. Output#
emp_no | salary |
---|---|
10011 | 25828 |
省略 | 省略 |
10001 | 60117 |
1.5. Source#
2. 题解#
要求在查询中包括暂时没有分配具体部门的员工,需要使用 LEFT JOIN
。
3. 代码#
加入hire_date = from_date
的筛选条件,找到员工入职时候的薪水情况。
SELECT t1.`emp_no`,
`salary`
FROM `employees` AS t1,
`salaries` AS t2 ON t1.emp_no = t2.emp_no
WHERE hire_date = from_date
ORDER BY t1.emp_no DESC
mysql
中需要使用 WHERE
。
SELECT t1.`emp_no`,
`salary`
FROM `employees` AS t1,
`salaries` AS t2
WHERE t1.emp_no = t2.emp_no
AND hire_date = from_date
ORDER BY t1.emp_no DESC
联系邮箱:curren_wong@163.com
CSDN:https://me.csdn.net/qq_41729780
知乎:https://zhuanlan.zhihu.com/c_1225417532351741952
公众号:复杂网络与机器学习
欢迎关注/转载,有问题欢迎通过邮箱交流。