需要在SQL表中找到“最大值”,然后根据“最大值”来生成ID

问题描述

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