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

如何按分组为行编号,实现同id下相同sub_id对应序号一致

实现方案

你的需求核心是相同id分组内,相同sub_id对应的number值完全一致,之前用row_number()不符合预期的原因是:row_number()会给分区内的每一行生成唯一的连续序号,即便两行的sub_id完全相同,也会生成不同的序号。

使用DENSE_RANK()窗口函数即可实现需求,示例代码如下:

SELECT 
    id,
    num,
    sub_id,
    DENSE_RANK() OVER (PARTITION BY id ORDER BY sub_id) AS number
FROM 你的表名

逻辑说明

  • PARTITION BY id:按照id字段分组,不同id的序号计算互不干扰
  • ORDER BY sub_id:同id分组内按照sub_id升序排序,相同的sub_id会得到相同的排名
  • DENSE_RANK():生成序号时相同值排名一致,序号不会产生断层,刚好匹配需求要求的输出规则

运行上述代码后得到的结果和你预期的输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:15:03