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

按键去重保留最早

中等 13-dedup 去重 dedupkeep-firsttie-breakdate-parse

raw_customers 是一份未清洗的客户导出,同一个客户可能因为邮箱大小写、前后空格不同被录入了多次。按邮箱去重,每个邮箱只保留注册最早的那条记录。

  • 规范化邮箱:email 去掉前后空格后转小写。规范化后相同的视为同一个客户。
  • 原值为 null,或规范化后是空串、n/a、- 的行视为没有邮箱,不参与去重、也不输出。
  • 注册日期:signup 是字符串,混用两种格式:YYYY-MM-DD 和 DD/MM/YYYY(日/月/年,例如 03/02/2025 是 2025 年 2 月 3 日)。本列没有其他格式,也没有缺失。
  • 每个邮箱保留注册日期最早的一行;注册日期相同时,取 id 按整数比较更小的一行(id 是数字字符串,'9' 比 '10' 小)。
  • 表里可能有完全重复的行。

输入

  • raw_customers(id, full_name, email, phone, birthday, signup, vip, spend),所有列都是字符串。

输出

列为 email(规范化后的邮箱)、id(整数)、signup_date(日期),行顺序不限。

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

raw_customers messy/raw_customers
#idstringfull_namestringemailstringphonestringbirthdaystringsignupstringvipstringspendstring
1 1 xu ming xu.ming60@mail.cn +86 189 3287 9217 - 2025-02-12 YES 3428
2 2 yang guo yang.guo68@example.com 10033907579 2003-04-21 05/01/2025 n 2,132.69
3 3 guo jing guo.jing91@mail.cn 15384019161 01/02/1994 2025-01-01 Y 3716.67
4 4 zhou jie zhou.jie26@qq.com 14514506123 29/02/2000 01/07/2025 no 999.73
5 5 liu yang liu.yang51@mail.cn 13049403 31/04/1999 2025-09-22 0 2024
6 6 zhang san ZHANG.SAN@Example.COM 13095597297 06/07/1978 15/11/2025 no $1,200.50
7 7 null zhou.jie54@example.com (111) 08436469 2003.3.24 2025-08-22 N $4,809.60
8 8 BOB smith N/A 173-0024-5892 11/08/1978 2026-06-19 yes 4842.25
9 9 LI WEI li.wei40@example.com (109) 17145211 - 13/05/2025 0 3592.13
10 10 he ping he.ping54@example.com 179-0966-9091 14/05/1977 02/02/2026 n 4395.47
11 11 guo jing guo.jing4@mail.cn 19170317974 05/05/1993 2025-07-27 0 2,316.99
12 12 he ping he.ping86@mail.cn 136-3363-9532 1992-01-23 11/10/2025 N 1442.64
13 13 BOB smith bob.smith67@mail.cn 1971-11-05 2025-07-14 1 $738.58
14 14 WANG FANG wang.fang@@mail.com N/A 09/04/1981 07/07/2026 yes 4152.00
15 15 grace HOPPER grace.hopper93@mail.cn (127) 73068985 - 2025-05-07 YES 1624
16 16 guo jing guo.jing34@qq.com (105) 81075864 2025-02-05 0 4,802.51
17 17 LIU YANG liu.yang93@qq.com 17791378 16/11/2025 no 740.03
18 18 GUO JING guo.jing26@mail.cn 18180960808 04/10/2004 2025-06-20 n 4196.37
19 19 zhou jie zhou.jie17@mail.cn 167-8513-6904 1971-01-07 13/01/2025 0 free
20 20 CHEN JING chen.jing66@qq.com - 28/04/2003 2025-05-20 0 1656
显示前 20 行,共 80 行

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

#emailStringidInt64signup_dateDate
1 amy.chen85@example.com 49 2025-12-11
2 guo.jing4@mail.cn 11 2025-07-27
3 wu.han88@mail.cn 33 2025-12-01
4 yang.guo36@mail.cn 39 2025-02-20
5 zhou.jie17@mail.cn 19 2025-01-13
6 guo.jing26@mail.cn 18 2025-06-20
7 sun.li@example.com 64 2025-02-11
8 linus.torvalds31@qq.com 70 2025-01-20
9 xu.ming@@mail.com 23 2025-07-19
10 amy.chen@example.com 63 2025-08-11
11 li.wei40@example.com 9 2025-05-13
12 ma.yun85@mail.cn 52 2025-05-07
13 xu.ming32@qq.com 29 2026-04-12
14 yang.guo68@example.com 2 2025-01-05
15 bob.smith67@mail.cn 13 2025-07-14
16 bob.smith80@qq.com 69 2026-05-22
17 chen.jing28@mail.cn 32 2025-04-10
18 chen.jing66@qq.com 20 2025-05-20
19 grace.hopper7@example.com 26 2026-04-01
20 ada.lovelace75@example.com 28 2025-09-07
21 linus.torvalds26@mail.cn 67 2026-01-09
22 liu.yang51@mail.cn 5 2025-09-22
23 xu.ming16@qq.com 43 2026-01-21
24 zhao.lei91@qq.com 24 2026-01-14
25 guo.jing23@example.com 35 2025-03-07
26 ma.yun54@example.com 51 2026-05-30
27 wang.fang50@mail.cn 27 2025-10-04
28 wu.han45@example.com 37 2026-01-20
29 zhao.lei76@example.com 62 2026-04-24
30 amy.chen21@mail.cn 71 2026-06-11
31 he.ping86@mail.cn 12 2025-10-11
32 huang.rong88@mail.cn 34 2026-08-22
33 ma.yun8@mail.cn 38 2026-01-03
34 ma.yun@@mail.com 30 2025-07-14
35 wang.fang4@qq.com 31 2025-12-13
36 zhang.san55@example.com 61 2025-08-12
37 chen.jing44@qq.com 22 2025-06-11
38 guo.jing34@qq.com 16 2025-02-05
39 liu.yang70@qq.com 48 2025-06-19
40 zhang.san@example.com 59 2025-04-01
41 zhou.jie18@example.com 74 2025-11-13
42 guo.jing91@mail.cn 3 2025-01-01
43 wang.fang46@mail.cn 54 2025-05-19
44 yang.guo28@example.com 21 2025-01-19
45 zhou.jie54@example.com 7 2025-08-22
46 linus.torvalds@example.com 58 2026-05-24
47 liu.yang93@qq.com 17 2025-11-16
48 zhang.san5@qq.com 42 2025-03-18
49 zhou.jie26@qq.com 4 2025-07-01
50 amy.chen61@example.com 25 2025-05-03
显示前 50 行,共 70 行