【发布时间】:2023-03-24 17:17:01
【问题描述】:
我正在使用 SQLite3 进行以下查询。
我有一个名为“产品”的表,如下所示:
我有一个名为“事务”的表,如下所示:
我有一个名为“segments”的表格,看起来像这样。 请注意,变量“active_flag”表示该段是否处于活动状态。
我的目标是
- 更新每个客户的活跃细分,基于他们的交易
- 提供每个更新细分中的客户数量。
以下是更新细分的方法:
- 如果客户在当天或之后进行了首次交易,则将该段标记为“NEW2” '2016-03-01'。
- 如果客户没有进行任何操作,则将该段标记为“未激活” 自“2016-03-01”以来的交易。
我知道我需要先找到最新的交易日期。我可以这样做:
select t.cust_id, t.trans_id, s.seg_name, s.active_flag, max(t.trans_dt) as latest_transaction_date
from transactions t
JOIN segments s
on t.cust_id = s.cust_id
GROUP by t.cust_id;
最后,当我拥有所有客户及其更新细分时,我知道我可以使用 groupby 计算每个细分中的客户数量。但是,我正在为中间步骤而苦苦挣扎。
对我来说最困难的部分是更新一个我从未做过的专栏。
输出应该是这样的。
seg_name count_cust
ONE-OFFS 11
LOYAL 15
NEW2 17
【问题讨论】: