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

over 的 mapping_strategy

困难 23-polars-only Polars 专属 overwindowlisttop-n

给每个员工加一列 top2:他所在部门里工资最高的两个人的名字列表。

  • 部门按 dept_id 划分,dept_id 为 null 的员工也作为一个部门。
  • 部门内按 salary 从高到低取前两名;工资相同时 emp_id 小的排前面。
  • top2 是字符串列表,元素顺序就是上面的名次顺序;部门只有一个人时列表只有一个元素。
  • 同一部门的每个员工,top2 都相同。输出的行数与输入相同。

考点:在窗口表达式里算出“每组一个列表”,再把它原样回填到组内每一行,不要先聚合再 join。判题只看结果。

输入

  • employees(emp_id, name, dept_id, manager_id, hire_date, salary, title, email)

输出

列为 emp_id, name, dept_id, top2,行顺序不限。

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

employees hr/employees
#emp_idint64namestringdept_idint64manager_idint64hire_datedatesalaryint64titlestringemailstring
1 1 Grace Liu 1 null 2015-10-01 98000 CEO grace.liu@corp.example
2 2 Leo Wang 2 1 2017-09-09 72000 VP Engineering leo.wang@corp.example
3 3 Sara Chen 3 1 2020-06-05 70000 VP Sales sara.chen@corp.example
4 4 Lucas Zhang 4 2 2023-04-20 52000 Engineering Manager lucas.zhang@corp.example
5 5 Mia Zhao 5 2 2016-07-16 52000 Data Manager mia.zhao@corp.example
6 6 Kevin Wu 3 3 2016-10-23 45000 Sales Manager kevin.wu@corp.example
7 7 Lily Xu 6 4 2025-03-17 48000 Infra Lead lily.xu@corp.example
8 8 Tom Huang 4 4 2022-01-03 46000 Senior Engineer tom.huang@corp.example
9 9 Liam Zhou 4 4 2020-10-01 39000 Software Engineer liam.zhou@corp.example
10 10 Nina Yang 4 4 2020-10-02 39000 Software Engineer nina.yang@corp.example
11 11 Oscar Lin 4 8 2022-07-15 26000 Junior Engineer oscar.lin@corp.example
12 12 Linda Ma 5 5 2016-08-25 41000 Data Engineer linda.ma@corp.example
13 13 Eric Sun 5 5 2021-09-09 33000 Data Analyst eric.sun@corp.example
14 14 Ivy He 5 5 2018-05-29 41000 Data Engineer ivy.he@corp.example
15 15 Lei Gao 5 12 2016-06-02 27000 Junior Data Engineer lei.gao@corp.example
16 16 Hao Guo 6 7 2016-12-18 44000 Site Reliability Engineer hao.guo@corp.example
17 17 Fang Luo 6 7 2020-11-11 38000 Infra engineer fang.luo@corp.example
18 18 Jun Liang 6 16 2020-09-08 25000 Junior Engineer jun.liang@corp.example
19 19 Dana Song 3 6 2016-10-13 31000 Account Executive dana.song@corp.example
20 20 Victor Tang 3 6 2018-09-12 31000 Account Executive victor.tang@corp.example
显示前 20 行,共 40 行

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

#emp_idInt64nameStringdept_idInt64top2List(String)
1 1 Grace Liu 1 ["Grace Liu"]
2 2 Leo Wang 2 ["Leo Wang", "Larry Ren"]
3 3 Sara Chen 3 ["Sara Chen", "Amy Yu"]
4 4 Lucas Zhang 4 ["Bob Pan", "Lucas Zhang"]
5 5 Mia Zhao 5 ["Mia Zhao", "Xin Cai"]
6 6 Kevin Wu 3 ["Sara Chen", "Amy Yu"]
7 7 Lily Xu 6 ["Lily Xu", "Hao Guo"]
8 8 Tom Huang 4 ["Bob Pan", "Lucas Zhang"]
9 9 Liam Zhou 4 ["Bob Pan", "Lucas Zhang"]
10 10 Nina Yang 4 ["Bob Pan", "Lucas Zhang"]
11 11 Oscar Lin 4 ["Bob Pan", "Lucas Zhang"]
12 12 Linda Ma 5 ["Mia Zhao", "Xin Cai"]
13 13 Eric Sun 5 ["Mia Zhao", "Xin Cai"]
14 14 Ivy He 5 ["Mia Zhao", "Xin Cai"]
15 15 Lei Gao 5 ["Mia Zhao", "Xin Cai"]
16 16 Hao Guo 6 ["Lily Xu", "Hao Guo"]
17 17 Fang Luo 6 ["Lily Xu", "Hao Guo"]
18 18 Jun Liang 6 ["Lily Xu", "Hao Guo"]
19 19 Dana Song 3 ["Sara Chen", "Amy Yu"]
20 20 Victor Tang 3 ["Sara Chen", "Amy Yu"]
21 21 Wen Han 3 ["Sara Chen", "Amy Yu"]
22 22 Lu Feng 3 ["Sara Chen", "Amy Yu"]
23 23 Yan Deng 3 ["Sara Chen", "Amy Yu"]
24 24 Zoe Cao 7 ["Zoe Cao"]
25 25 Ping Peng 4 ["Bob Pan", "Lucas Zhang"]
26 26 Qing Xie 4 ["Bob Pan", "Lucas Zhang"]
27 27 Rui Lu null ["Uma Jiang", "Rui Lu"]
28 28 Uma Jiang null ["Uma Jiang", "Rui Lu"]
29 29 Xin Cai 5 ["Mia Zhao", "Xin Cai"]
30 30 Bob Pan 4 ["Bob Pan", "Lucas Zhang"]
31 31 Chen Du 6 ["Lily Xu", "Hao Guo"]
32 32 Amy Yu 3 ["Sara Chen", "Amy Yu"]
33 33 Larry Ren 2 ["Leo Wang", "Larry Ren"]
34 34 Wei Shi 5 ["Mia Zhao", "Xin Cai"]
35 35 Zhang Min 4 ["Bob Pan", "Lucas Zhang"]
36 36 王磊 3 ["Sara Chen", "Amy Yu"]
37 37 李静 5 ["Mia Zhao", "Xin Cai"]
38 38 Henry Kong 6 ["Lily Xu", "Hao Guo"]
39 39 Logan Bai 4 ["Bob Pan", "Lucas Zhang"]
40 40 Sophie Fan 3 ["Sara Chen", "Amy Yu"]
共 40 行