每个用户达到的标记数量阈值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每个用户达到的标记数量阈值相关的知识,希望对你有一定的参考价值。
故事:两个条件:
- 我需要计算用户花费的天数20、50和100 $(基于他的register_date)>
- [如果某人的首次购买金额> 100美元,则3个阈值的天数相同。
我能够获得标记阈值的逻辑,但是对于第一次超过一个或两个阈值的用户,我还是很固执。
目标:
我需要计算他们达到20、50和100美元所需的天数。当前查询:
我可能必须更改整个逻辑才能满足第二个条件,但是,是的,我陷入了困境。以下代码正确标记了达到阈值。select user_id, register_date ,total ,order_date ,cumulative_sum ,threshold ,case when threshold+LAG(threshold,1,0) over (partition by user_id order by order_date)=1 then 1 when threshold+LAG(threshold,1,0) over (partition by user_id order by order_date)=3 then 2 when threshold+LAG(threshold,1,0) over (partition by user_id order by order_date)=5 then 3 else 0 end as flag from ( select user_id, register_date ,total ,order_date ,cumulative_sum ,case When cumulative_sum>=100 then 3 When cumulative_sum>=50 then 2 When cumulative_sum>=20 then 1 else 0 end as threshold from ( select user_id, register_date ,(price*quantity) as total ,order_date ,SUM(price*quantity) over (partition by user_id order by order_date asc) as cumulative_sum from #t1 ) as base1 ) as base2
数据:
CREATE TABLE #t1 (user_id int, price int, quantity int, order_date datetime,register_date datetime)
insert into #t1 values
(1,10,1,'2019-01-01 00:00:00.000','2019-01-01 00:00:00.000'),
(1,15,1,'2019-01-02 00:00:00.000','2019-01-01 00:00:00.000'),
(1,30,1,'2019-01-03 00:00:00.000','2019-01-01 00:00:00.000'),
(1,100,1,'2019-01-04 00:00:00.000','2019-01-01 00:00:00.000'),
(2,60,1,'2019-01-02 00:00:00.000','2019-01-01 00:00:00.000'),
(3,150,1,'2019-01-03 00:00:00.000','2019-01-01 00:00:00.000'),
(4,10,1,'2019-01-04 00:00:00.000','2019-01-01 00:00:00.000'),
(4,20,1,'2019-01-05 00:00:00.000','2019-01-01 00:00:00.000'),
(4,50,2,'2019-01-06 00:00:00.000','2019-01-01 00:00:00.000')
故事:两个条件:我需要根据用户的register_date计算用户花费20、50和100美元以上的天数,如果某人的首次购买> 100 $,那么该天数...
答案
仅使用条件聚合和datediff()
:
以上是关于每个用户达到的标记数量阈值的主要内容,如果未能解决你的问题,请参考以下文章
InfoWindow中的Android Google地图摘要自动更新