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

规范化后去重

中等 13-dedup 去重 dedupnormalizeregexnull-key

raw_customers 里同一个人可能被录入多次,姓名的大小写、空格不同,电话的写法也不同。按下面两项规范化之后去重:

  • 姓名键 name_key:full_name 去掉所有空格(包括中间的空格)后转小写。full_name 为 null 时 name_key 为 null。
  • 电话键 phone_digits:phone 只保留数字字符(0–9),其余字符全部删掉。删完后为空串,或 phone 本身为 null 时,phone_digits 为 null。不处理国家码:+86 138… 规范化后以 86 开头,与 138… 不同。

(name_key, phone_digits) 两项都相同的行视为重复,null 与 null 视为相同(例如两行姓名都为 null、电话键也都为 null,算重复)。每组重复只保留 id(按整数比较)最小的一行。

输入

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

输出

列为 id(整数)、name_key、phone_digits,每组一行,行顺序不限。

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

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,行顺序不限)

#idInt64name_keyStringphone_digitsString
1 2 yangguo 10033907579
2 4 zhoujie 14514506123
3 6 zhangsan 13095597297
4 7 null 11108436469
5 9 liwei 10917145211
6 10 heping 17909669091
7 14 wangfang null
8 15 gracehopper 12773068985
9 16 guojing 10581075864
10 17 liuyang 17791378
11 18 guojing 18180960808
12 19 zhoujie 16785136904
13 22 chenjing 13171008989
14 23 xuming 16856395003
15 28 adalovelace 12660560951
16 30 mayun 8612371848954
17 31 wangfang 10138411
18 33 wuhan 8614014391475
19 34 huangrong 17847536831
20 35 guojing 8611740380829
21 36 zhangsan 10216337857
22 37 wuhan 16178085016
23 38 mayun 14142207097
24 40 mayun 13075736926
25 41 liuyang 13221549817
26 42 zhangsan 8616872454618
27 44 zhoujie 16154497576
28 45 huangrong 11661568232
29 46 gracehopper 8615354718638
30 52 mayun 13158692369
31 55 gracehopper null
32 57 heping 15708488829
33 63 amychen 16610454908
34 64 sunli 11056716548
35 65 wuhan 18457623487
36 71 amychen 8619794564587
37 73 liuyang 19422369432
38 1 xuming 8618932879217
39 3 guojing 15384019161
40 5 liuyang 13049403
41 8 bobsmith 17300245892
42 11 guojing 19170317974
43 12 heping 13633639532
44 13 bobsmith null
45 20 chenjing null
46 21 yangguo null
47 24 zhaolei 16993895441
48 25 amychen null
49 26 gracehopper 16014445888
50 29 xuming 11096713058
显示前 50 行,共 72 行