【发布时间】:2020-12-17 14:46:43
【问题描述】:
我正面临一些困难时期,需要快速帮助。如果有人可以帮助我,那就太好了。 提前非常感谢:)
我有 2 张桌子。 第一张表:daily_customer_snapshot:客户的每日快照,如下图所示。
| c_id | date | state | location |
|---|---|---|---|
| b1 | 2020-12-01 | Active | OOW |
| b1 | 2020-12-02 | Active | OOW |
| b1 | 2020-12-03 | Active | OOW |
| b1 | 2020-12-04 | Active | OOW |
| b1 | 2020-12-05 | Active | OOW |
| b3 | 2020-12-06 | Active | OOW |
| b3 | 2020-12-07 | Active | OOW |
| b3 | 2020-12-08 | Active | OOW |
| b1 | 2020-12-09 | Decay | IW |
| b2 | 2020-12-15 | Active | OOW |
第二个表:customer_date_series:包含从用户成为我们的客户之日起的日期系列。 例如:参考图片 2:用户 b1 在“2020-12-01”成为我们的客户,用户 b3 在“2020-12-06”成为我们的客户 b2 于 '2020-12-15' 成为我们的客户。我已经生成了带有 customer_id 的日期系列,以计算在任何给定日期我们有多少客户。
| c_id | date |
|---|---|
| b1 | 2020-12-01 |
| b1 | 2020-12-02 |
| b1 | 2020-12-03 |
| b1 | 2020-12-04 |
| b1 | 2020-12-05 |
| b1 | 2020-12-06 |
| b1 | 2020-12-07 |
| b1 | 2020-12-08 |
| b1 | 2020-12-09 |
| b1 | 2020-12-10 |
| b1 | 2020-12-11 |
| b1 | 2020-12-12 |
| b1 | 2020-12-13 |
| b1 | 2020-12-14 |
| b1 | 2020-12-15 |
| b1 | 2020-12-16 |
| b3 | 2020-12-06 |
| b3 | 2020-12-07 |
| b3 | 2020-12-08 |
| b3 | 2020-12-09 |
| b3 | 2020-12-10 |
| b3 | 2020-12-11 |
| b3 | 2020-12-12 |
| b3 | 2020-12-13 |
| b3 | 2020-12-14 |
| b3 | 2020-12-15 |
| b3 | 2020-12-16 |
| b2 | 2020-12-15 |
| b2 | 2020-12-16 |
我将 table1 (customer_date_series) 与 table2 (daily_customer_snapshot) 连接在一起,以获取任何给定日期的客户行为概览。 我得到了如图 3 所示的结果。
查询加入:
select
bds.date,
bds.c_id,
b.state,
b.location
FROM
customer_date_series bds LEFT JOIN daily_customer_snapshot b ON bds.c_id = b.c_id and bds.date = b.date
ORDER BY
1,2;
| date | c_id | state | location |
|---|---|---|---|
| 2020-12-01 | b1 | Active | OOW |
| 2020-12-02 | b1 | Active | OOW |
| 2020-12-03 | b1 | Active | OOW |
| 2020-12-04 | b1 | Active | OOW |
| 2020-12-05 | b1 | Active | OOW |
| 2020-12-06 | b1 | ||
| 2020-12-06 | b3 | Active | OOW |
| 2020-12-07 | b1 | ||
| 2020-12-07 | b3 | Active | OOW |
| 2020-12-08 | b1 | ||
| 2020-12-08 | b3 | Active | OOW |
| 2020-12-09 | b1 | Decay | IW |
| 2020-12-09 | b3 | ||
| 2020-12-10 | b1 | ||
| 2020-12-10 | b3 | ||
| 2020-12-11 | b1 | ||
| 2020-12-11 | b3 | ||
| 2020-12-12 | b1 | ||
| 2020-12-12 | b3 | ||
| 2020-12-13 | b1 | ||
| 2020-12-13 | b3 | ||
| 2020-12-14 | b1 | ||
| 2020-12-14 | b3 | ||
| 2020-12-15 | b1 | ||
| 2020-12-15 | b2 | Active | OOW |
| 2020-12-15 | b3 | ||
| 2020-12-16 | b1 | ||
| 2020-12-16 | b2 | ||
| 2020-12-16 | b3 |
这是我苦苦挣扎的地方。 我在这里面临挑战。我想创建名为“状态”的新列,如果daily_customer_snapshot 中的客户数据在current_date 的过去5 天内更新 我想将状态设置为“活动”,否则为“不活动”。 前任:
【问题讨论】:
-
请阅读this,了解一些改进问题的技巧。不要发布数据图像,使用文本。您需要一个适用于
mysql、postgresql和tsql的答案吗?如果没有,则删除不适当的标签。 -
Postgres 还是 Redshift?尽管它们有着一些古老的渊源,但它们是截然不同的产品。
-
Redshift 是 @a_horse_with_no_name ,如果有人能给出更优化的解决方案,那就太好了。
标签: sql amazon-redshift