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

按列名拼接

中等 12-setops 集合运算与拼接 concatunion-by-nameschema-alignment

两家门店各导出了一份客户表,列不完全相同、列的顺序也不同。把它们上下拼接成一张表,按列名对齐。

  • 结果包含两张表所有列的并集:customer_id, name, city, signup_date, phone。
  • 某张表没有的列,在来自该表的行里为 null(例如来自 store_b 的行 signup_date 为 null)。
  • 同名列要对到同一列上,不能按位置对齐(两张表 name 和 city 的先后顺序不同)。
  • 保留所有行,不去重(同一个客户可能在两家店都出现)。
  • 某张表可能是空表;即使 store_b 为空,结果里也要有 phone 列(全为 null)。

输入

  • store_a(customer_id, name, city, signup_date)
  • store_b(customer_id, city, name, phone)

输出

列为 customer_id, name, city, signup_date, phone,行顺序和列顺序都不限。

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

store_a local/base/store_a
#customer_idint64namestringcitystringsignup_datedate
1 1 Amy Chen Shanghai 2026-01-05
2 2 Bo Li Beijing 2026-02-11
3 3 Cai Wu null 2026-03-20
共 3 行
store_b local/base/store_b
#customer_idint64citystringnamestringphonestring
1 2 Beijing Bo Li 13800000002
2 4 Shenzhen Dan Xu null
3 5 Hangzhou Eva Zhou 13900000005
共 3 行

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

#customer_idInt64nameStringcityStringsignup_dateDatephoneString
1 1 Amy Chen Shanghai 2026-01-05 null
2 2 Bo Li Beijing 2026-02-11 null
3 3 Cai Wu null 2026-03-20 null
4 2 Bo Li Beijing null 13800000002
5 4 Dan Xu Shenzhen null null
6 5 Eva Zhou Hangzhou null 13900000005
共 6 行