df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

每人最新记录

中等 13-dedup 去重 deduplatest-per-grouparg-max

salary_history 记录了每次调薪,每行是一名员工在某个生效日期之后的月薪。取出每名员工最新(effective_date 最大)的那一条记录。

  • 每名员工只输出一行。(emp_id, effective_date) 是主键,同一员工不会有两条生效日期相同的记录。
  • 最新记录的工资不一定是这名员工历史上最高的工资(可能降过薪)。
  • 表里的行不保证按日期排好序。

输入

  • salary_history(emp_id, effective_date, salary)

输出

列为 emp_id, effective_date, salary,行顺序不限。

输入表 (case base,共 2 个 case:base、unsorted)

salary_history hr/salary_history
#emp_idint64effective_datedatesalaryint64
1 1 2015-10-01 78400
2 1 2018-11-07 88200
3 1 2022-03-07 98000
4 2 2017-09-09 57600
5 2 2021-02-08 64800
6 2 2021-12-30 72000
7 3 2020-06-05 56000
8 3 2023-07-02 63000
9 3 2024-03-29 70000
10 4 2023-04-20 41600
11 4 2024-12-09 46800
12 4 2025-11-19 52000
13 5 2016-07-16 41600
14 5 2020-08-21 46800
15 5 2022-09-30 52000
16 6 2016-10-23 36000
17 6 2019-07-25 40500
18 6 2026-03-02 45000
19 7 2025-03-17 38400
20 7 2025-09-14 43200
显示前 20 行,共 120 行

期望输出 (case base,行顺序不限)

#emp_idInt64effective_dateDatesalaryInt64
1 2 2021-12-30 72000
2 5 2022-09-30 52000
3 9 2025-08-25 39000
4 10 2025-12-13 39000
5 11 2025-04-30 26000
6 14 2025-02-20 41000
7 15 2024-05-21 27000
8 16 2023-02-04 44000
9 17 2024-04-07 38000
10 18 2025-09-17 25000
11 22 2024-03-11 36000
12 26 2025-05-15 30000
13 28 2025-05-26 24000
14 29 2025-06-11 47000
15 30 2026-03-06 53000
16 31 2025-12-20 38000
17 32 2024-01-22 46500
18 34 2025-05-18 26000
19 35 2022-08-09 37000
20 37 2026-05-02 23000
21 39 2025-05-04 46000
22 1 2022-03-07 98000
23 3 2024-03-29 70000
24 4 2025-11-19 52000
25 6 2026-03-02 45000
26 7 2026-04-22 48000
27 8 2026-06-16 46000
28 12 2024-02-13 41000
29 13 2025-05-16 33000
30 19 2026-01-24 31000
31 20 2024-01-30 31000
32 21 2024-01-26 29500
33 23 2025-07-07 12000
34 24 2022-04-07 61000
35 25 2026-02-24 37000
36 27 2020-10-07 22000
37 33 2024-03-21 66000
38 36 2025-02-22 28000
39 38 2024-04-05 25000
40 40 2026-08-19 28000
共 40 行