Skip to content

牛客网 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#

牛客网 SQL实战 6 查找所有员工入职时候的薪水情况

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

CSDNhttps://me.csdn.net/qq_41729780

知乎https://zhuanlan.zhihu.com/c_1225417532351741952

公众号复杂网络与机器学习

欢迎关注/转载,有问题欢迎通过邮箱交流。

二维码

Back to top