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

纵向拼接

简单 12-setops 集合运算与拼接 concatunion-allliteral-column

把 9 月和 10 月两张订单表上下拼接成一张表,并加一列 src 标出每行来自哪张表。

  • 来自 sep_orders 的行,src 为 '2026-09';来自 oct_orders 的行,src 为 '2026-10'。
  • 保留所有行,不去重:即使两张表里(或同一张表里)有完全相同的行,也要原样全部保留。
  • 某张表可能是空表。
  • amount 可能为 null,原样保留。

输入

  • sep_orders(order_id, customer_id, order_ts, amount)
  • oct_orders(order_id, customer_id, order_ts, amount)

两张表的列名、列顺序和类型完全相同。

输出

列为 order_id, customer_id, order_ts, amount, src,行顺序不限。

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

sep_orders local/base/sep_orders
#order_idint64customer_idint64order_tsdatetimeamountfloat64
1 101 1 2026-09-02 10:15:00 59.9
2 102 2 2026-09-05 14:00:00 120.0
3 103 1 2026-09-18 09:30:00 35.5
4 104 3 2026-09-30 23:59:59 210.0
共 4 行
oct_orders local/base/oct_orders
#order_idint64customer_idint64order_tsdatetimeamountfloat64
1 201 2 2026-10-01 00:00:00 88.0
2 202 4 2026-10-07 16:45:00 15.0
3 203 1 2026-10-12 11:20:00 null
共 3 行

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

#order_idInt64customer_idInt64order_tsDatetime(time_unit='us', time_zone=None)amountFloat64srcString
1 101 1 2026-09-02 10:15:00 59.9 2026-09
2 102 2 2026-09-05 14:00:00 120.0 2026-09
3 103 1 2026-09-18 09:30:00 35.5 2026-09
4 104 3 2026-09-30 23:59:59 210.0 2026-09
5 201 2 2026-10-01 00:00:00 88.0 2026-10
6 202 4 2026-10-07 16:45:00 15.0 2026-10
7 203 1 2026-10-12 11:20:00 null 2026-10
共 7 行