目标是为活跃客户创建标志。 活跃客户是每月至少进行一次交易的人。
时间范围-2018年5月至2019年5月 数据处于交易级别
-------------------------------------
txn_id | txn_date | name | amount
-------------------------------------
101 2018-05-01 ABC 100
102 2018-05-02 ABC 200
-------------------------------------
output should be like this -
----------------
name | flag
----------------
ABC active
BCF inactive
答案 0 :(得分:1)
您可以使用汇总来获得活跃客户:
select name
from t
where txn_date >= '2018-05-01' and txn_date < '2019-06-01'
group by name
having count(distinct last_day(txn_date)) = 13 -- all months accounted for
编辑:
如果要标记,只需将条件移至case
表达式:
select name,
(case when count(distinct case when txn_date >= '2018-05-01' and txn_date < '2019-06-01' then last_day(txn_date) end) = 13
then 'active' else 'inactive'
end) as flag
from t;