You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:35:24