列表

详情


2668. 查询员工当前薪水

表:Salary

+---------------+---------+ 
| 列名          | 类型    | 
+---------------+---------+ 
| emp_id        | int     | 
| firstname     | varchar |
| lastname      | varchar |
| salary        | varchar |
| department_id | varchar |
+---------------+---------+
(emp_id, salary) 是该表的主键(具有唯一值的列的组合)。
每行包含员工的详细信息和他们每年的薪水,但有些记录是旧的,包含过时的薪资信息。

找出每个员工的当前薪水,假设薪水每年增加。输出他们的 emp_id 、firstname 、lastname 、salarydepartment_id

按 emp_id 升序排序 返回结果表。

返回结果格式如下所示。

 

示例 1:

输入:
Salary 表:
+--------+-----------+----------+--------+---------------+
| emp_id | firstname | lastname | salary | department_id |
+--------+-----------+----------+--------+---------------+ 
| 1      | Todd      | Wilson   | 110000 | D1006         |
| 1      | Todd      | Wilson   | 106119 | D1006         | 
| 2      | Justin    | Simon    | 128922 | D1005         | 
| 2      | Justin    | Simon    | 130000 | D1005         | 
| 3      | Kelly     | Rosario  | 42689  | D1002         | 
| 4      | Patricia  | Powell   | 162825 | D1004         |
| 4      | Patricia  | Powell   | 170000 | D1004         |
| 5      | Sherry    | Golden   | 44101  | D1002         | 
| 6      | Natasha   | Swanson  | 79632  | D1005         | 
| 6      | Natasha   | Swanson  | 90000  | D1005         |
+--------+-----------+----------+--------+---------------+
输出:
+--------+-----------+----------+--------+---------------+
| emp_id | firstname | lastname | salary | department_id |
+--------+-----------+----------+--------+---------------+ 
| 1      | Todd      | Wilson   | 110000 | D1006         |
| 2      | Justin    | Simon    | 130000 | D1005         | 
| 3      | Kelly     | Rosario  | 42689  | D1002         | 
| 4      | Patricia  | Powell   | 170000 | D1004         |
| 5      | Sherry    | Golden   | 44101  | D1002         | 
| 6      | Natasha   | Swanson  | 90000  | D1005         |
+--------+-----------+----------+--------+---------------+

解释:
- emp_id 1 有两条记录,工资分别为 110000 和 106119,其中 110000 是更新后的工资(假设工资每年都会增加)
- emp_id 2 有两条记录,工资分别为 128922 和 130000,其中 130000 是更新后的工资。
- emp_id 3 只有一条工资记录,因此这已经是更新后的工资。
- emp_id 4 有两条记录,工资分别为 162825 和 170000,其中 170000 是更新后的工资。
- emp_id 5 只有一条工资记录,因此这已经是更新后的工资。
- emp_id 6 有两条记录,工资分别为 79632 和 90000,其中 90000 是更新后的工资。

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
# Write your MySQL query statement below

mysql 解法, 执行用时: 599 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 16:45:59

# Write your MySQL query statement below
select emp_id, firstname, lastname, salary, department_id from (
    select emp_id, firstname, lastname, salary, department_id,
        rank() over(partition by emp_id order by salary desc) rk 
    from Salary
) sa
where rk = 1
order by emp_id asc

上一题