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

如何为列中每个ID的每一次出现生成对应行号新列?

SQL 按ID分组统计出现次数解决方案

问题原因

你之前使用的ROW_NUMBER() OVER (ORDER BY [Id]) as rownum缺少分组配置,生成的是全表范围的全局行号,无法实现同ID维度的出现次数统计。

场景1:统计同ID的第N次出现(按顺序编号)

如果需要相同ID第一次出现标记为1、第二次为2,以此类推,使用带PARTITION BY的ROW_NUMBER开窗函数即可:

-- 若无需指定同ID内的排序规则,可直接使用以下写法
ROW_NUMBER() OVER (PARTITION BY [Id] ORDER BY (SELECT 1)) AS 出现次数

-- 若需要按特定规则排序(比如按创建时间先后统计出现顺序),替换ORDER BY后的字段即可
ROW_NUMBER() OVER (PARTITION BY [Id] ORDER BY create_time ASC) AS 出现次数

效果示例

原始数据:

Id内容
1测试1
2测试2
1测试3
1测试4
2测试5

输出结果:

Id内容出现次数
1测试11
1测试32
1测试43
2测试21
2测试52

场景2:统计同ID的总出现次数(所有同ID行显示相同总数值)

如果需要每行都展示对应ID的总出现次数,使用COUNT开窗函数:

COUNT(*) OVER (PARTITION BY [Id]) AS ID总出现次数

效果示例

输出结果:

Id内容ID总出现次数
1测试13
1测试33
1测试43
2测试22
2测试52

内容的提问来源于stack exchange,提问作者Bryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:54:03