问题描述
Member_Id Interaction Status
971053019 1 1
971053019 2 1
971053019 3 1
971053019 4 0
971053019 1 1
971053019 2 0
971053019 1 0
971053019 1 0
971053019 1 1
971053019 2 1
971053019 3 0
971053019 1 0
对于上表,我需要在状态列中生成1。
这里的重点是...,我们需要在交互列中找到最大值...对于该MAX值,我们需要将状态列更新为0 ...,对于其余行应该为1。
我尝试通过分组对sql Aggregated Max Value函数进行尝试,但是我无法设置预期的结果集。谁能帮助我使用sql脚本。
解决方法
我认为这是一种空白与孤岛的问题。您要在行interaction
上设置该标志不大于“跟随” interaction
的标志。
为使问题更有意义,您需要一列来定义行的顺序。您的样本数据中未显示此数据,因此我假设为id
。然后,您可以使用lead()
:
select
member_id,interaction,case when lead(interaction,1,interaction) (over(partition by member_id order by id) > interaction
then 1
else 0
end as status
from mytable