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

嵌套 when 与 replace_strict

简单 23-polars-only Polars 专属 whenreplace-strictconditionalmapping

给每个订单打两个标签。

status_label:按映射表转换 status:

status status_label
paid completed
pending open
其他任何值(包括 refunded、cancelled、表里没列出的值、大小写不同的写法)以及 null closed

daypart:按下单时间 order_ts 的小时数:

小时 daypart
0–5 night
6–11 morning
12–17 afternoon
18–23 evening

即 06:00:00 属于 morning,05:59:59 属于 night。

考点:多分支条件用一条 when/then 链完成;值映射用“严格映射 + 默认值”,不要逐行判断。判题只看结果。

输入

  • orders(order_id, customer_id, order_ts, status, channel)

输出

列为 order_id, status_label, daypart,每个订单一行,行顺序不限。

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

orders shop/orders
#order_idint64customer_idint64order_tsdatetimestatusstringchannelstring
1 1001 39 2026-01-01 19:38:00 paid app
2 1002 16 2026-01-17 14:07:00 paid app
3 1003 4 2026-01-08 15:40:20 cancelled web
4 1004 2 2026-05-23 10:48:58 paid null
5 1005 12 2026-06-22 11:07:22 paid store
6 1006 17 2026-08-15 05:15:25 paid web
7 1007 9 2026-06-11 01:00:32 refunded store
8 1008 45 2026-09-19 20:47:10 paid web
9 1009 2 2025-10-05 04:53:38 paid app
10 1010 4 2026-02-19 01:39:54 paid app
11 1011 28 2026-03-05 03:04:45 refunded store
12 1012 2 2026-08-01 07:09:17 paid web
13 1013 26 2026-01-22 03:48:14 refunded store
14 1014 2 2026-02-09 01:41:41 paid app
15 1015 5 2026-08-03 19:49:04 refunded web
16 1016 26 2026-02-16 00:43:43 refunded app
17 1017 9 2025-12-06 04:48:57 pending app
18 1018 999 2026-05-19 12:13:43 paid store
19 1019 26 2026-02-05 15:02:26 paid store
20 1020 44 2025-11-24 11:19:00 cancelled web
显示前 20 行,共 200 行

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

#order_idInt64status_labelStringdaypartString
1 1001 completed evening
2 1002 completed afternoon
3 1003 closed afternoon
4 1004 completed morning
5 1005 completed morning
6 1006 completed night
7 1007 closed night
8 1008 completed evening
9 1009 completed night
10 1010 completed night
11 1011 closed night
12 1012 completed morning
13 1013 closed night
14 1014 completed night
15 1015 closed evening
16 1016 closed night
17 1017 open night
18 1018 completed afternoon
19 1019 completed afternoon
20 1020 closed morning
21 1021 closed afternoon
22 1022 closed morning
23 1023 closed night
24 1024 completed evening
25 1025 closed morning
26 1026 completed morning
27 1027 completed morning
28 1028 completed evening
29 1029 completed afternoon
30 1030 completed afternoon
31 1031 completed morning
32 1032 completed afternoon
33 1033 completed afternoon
34 1034 completed morning
35 1035 closed evening
36 1036 closed night
37 1037 open evening
38 1038 completed morning
39 1039 completed morning
40 1040 closed afternoon
41 1041 completed afternoon
42 1042 closed afternoon
43 1043 completed evening
44 1044 completed evening
45 1045 closed morning
46 1046 completed night
47 1047 completed morning
48 1048 completed night
49 1049 completed evening
50 1050 closed afternoon
显示前 50 行,共 200 行