【发布时间】:2021-12-20 12:31:38
【问题描述】:
数据说明
我有两个数据表,一个(PAGE VIEWS)代表用户事件(CV 1、2、3 等)以及与成员 ID 相关联的时间戳。第二个表 (ORDERS) 表示已下订单 - 事件时间和订单价值。每张桌子上都有会员 ID。
表 1 - 页面浏览量(总共 1,000 行)
| Event_Day | Member ID | CV1 | CV2 | CV3 | CV4 |
|---|---|---|---|---|---|
| 11/5/2021 | 115126 | APP | camp1 | Trigger | APP-camp1-Trigger |
| 11/14/2021 | 189192 | SEARCH | camp4 | Search | SEARCH-camp4-Search |
| 11/5/2021 | 193320 | SEARCH | camp5 | Search | SEARCH-camp5-Search |
表 2 - ORDERS(共 249 行)
| Date | Purchase Order ID | Membership Number | Order Value |
|---|---|---|---|
| 7/12/2021 | 0088 | 183300 | 29.34 |
| 18/12/2021 | 0180 | 132159 | 132.51 |
| 4/12/2021 | 0050 | 141542 | 24.35 |
我要回答的问题
我想在 (PAGE VIEWS) 中的最早事件日期之前将 (ORDERS) 订单值归因于 CV 列 (PAGE VIEWS)。这将是一个简单的归因用例。
Visual explanation of the two data tables
问题
我已经度过了周末的结果并滚动浏览了各种在线文章,但最接近的是使用以下查询
Select min (event_day) As "first date",member_id,cv2,order_value,purchase_order_id
from mta_app_allpages,mta_app_orders
where member_id = membership_number
group by member_id,cv2,order_value,purchase_order_id;
使用 DISTINCT 函数生成的数据是正确的,因为第 2 行与第 1 行不同,但我想将结果关联到第 1 行的 member_id 113290 和第 3 行的 member_id 170897 等。
| Date | member_id | cv2 | Order Value |
|---|---|---|---|
| 2021-11-01 | 113290 | camp5 | 58.81 |
| 2021-11-05 | 113290 | camp4 | 58.51 |
| 2021-11-03 | 170897 | camp3 | 36.26 |
| 2021-11-09 | 170897 | camp5 | 36.26 |
| 2021-11-24 | 170897 | camp1 | 36.26 |
Image showing the results table
我尝试过使用分区和子查询功能,但收效甚微。正确的调用最多应返回 249 行,因为这与我在 ORDERS 表中的行数一样多。
第一次发布海报,希望我的格式正确。非常感谢。
【问题讨论】:
-
这是个好信息!您使用的是什么数据库(和版本)?还要添加 DB 标记,正如 sql 标记信息所说的那样。
-
今日提示:切换到现代、明确的
JOIN语法。更容易编写(没有错误),更容易阅读(和维护),如果需要更容易转换为外连接
标签: sql