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

集合运算的 ALL 陷阱

中等 25-duckdb-rel-only DuckDB Relational 专属 exceptset-semanticsdistinct

找出上周买过、但本周没有买过的 (user_id, item) 组合。

  • 这是集合意义上的差集:只要某个组合在本周出现过(不管几次),它就不应该出现在结果里。
  • 结果去重:每个组合最多出现一次。
  • 两张表里都可能有完全重复的行。

输入

  • last_week(user_id, item)
  • this_week(user_id, item)

输出

列为 user_id, item,行顺序不限。

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

last_week local/base/last_week
#user_idint64itemstring
1 1 apple
2 1 apple
3 1 pear
4 2 milk
5 2 milk
6 2 milk
7 3 egg
8 4 tea
共 8 行
this_week local/base/this_week
#user_idint64itemstring
1 1 apple
2 2 milk
3 4 tea
4 5 rice
共 4 行

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

#user_idInt64itemString
1 3 egg
2 1 pear
共 2 行