【发布时间】:2020-08-10 20:51:53
【问题描述】:
我有两张桌子。一个是Orders 的列表,一个是Events 的列表。
对于每个Order,我想加入在created_at 的created_at 之前发生的最后一个Event(使用clicked_at)。
我已经尝试了多种方法来使其正常工作,并在 Stack Overflow 上尝试了其他几个答案,但我正在努力返回正确的数据。
我心目中子查询的 sudo 逻辑是这样的:
SELECT campaign, user_id, created_at
FROM `Events`
WHERE order.user_id = user_id AND clicked_at < order.created_at
ORDER created_at DESC
LIMIT 1
请看下面的示例数据:
# Orders
| order_id | user_id | created_at |
-----------------------------------
| 123 | abc | 2020-07-04 |
| 456 | abc | 2020-05-01 |
# Events
| campaign | keyword | user_id | clicked_at |
----------------------------------------------
| facebook | shoes | abc | 2020-07-03 |
| google | hair | abc | 2020-07-01 |
我想要的结果
# Orders with campaign attribution
| order_id | user_id | created_at | campaign | keyword |
---------------------------------------------------------
| 123 | abc | 2020-07-04 | facebook | shoes |
| 456 | abc | 2020-06-04 | null | null |
谢谢! 亚历克斯
【问题讨论】:
标签: mysql google-bigquery