Snowflake SQL更新列:为重复ID行设置Mark列值(1和0)
为重复ID的行标记唯一标识列
原始数据表
Col1 Colb ID Mark 1 2 1 Null 2 4 1 Null 2 3 2 Null 2 3 1 Null 2 3 2 Null 2 3 3 Null
需求说明
针对表中存在重复的ID,将每个ID对应的行里选其中一行的Mark设为1,其余设为0;对于只出现一次的ID,Mark直接设为1。
预期结果
Col1 Colb ID Mark 1 2 1 1 2 4 1 0 2 3 2 1 2 3 1 0 2 3 2 0 2 3 3 1
实现方案(SQL)
用窗口函数ROW_NUMBER()就能实现,按ID分组后给每行分配序号,序号为1的行Mark设为1,其余为0:
SELECT Col1, Colb, ID, CASE WHEN ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Col1, Colb) = 1 THEN 1 ELSE 0 END AS Mark FROM 你的数据表名;
PARTITION BY ID:按ID对数据分组ORDER BY Col1, Colb:指定每组内的排序规则,用来确定哪一行被标记为1(可根据实际需求调整排序字段)ROW_NUMBER():为每组内的行生成连续序号,序号为1的行设为Mark=1,其余为0
内容的提问来源于stack exchange,提问作者codejüngling
相关产品推荐
相关产品推荐

