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

如何让ROW_NUMBER()函数每计数X行后重置为1?

实现ROW_NUMBER()每N行重置计数的方法

当然可以实现!这是SQL里非常实用的一个需求,用窗口函数搭配简单的算术运算就能轻松搞定。

针对你想要每3行重置一次行号的场景,核心思路是先生成连续的行号,再通过取模运算让数值循环起来:

SELECT 
    YEAR,
    -- 核心计算逻辑:行号减1取模3,再加1实现1-3循环
    (ROW_NUMBER() OVER (ORDER BY YEAR) - 1) % 3 + 1 AS RowNumber
FROM your_table;

逻辑拆解:

  • ROW_NUMBER() OVER (ORDER BY YEAR):先按YEAR字段排序,生成从1开始的连续行号(1、2、3、4、5...)
  • 减1之后,行号变成0、1、2、3、4...
  • % 3 取模运算:让结果在0、1、2之间循环(0%3=0,1%3=1,2%3=2,3%3=0,以此类推)
  • 最后加1,就把循环的数值转换成你需要的1、2、3、1、2、3...序列

如果你的数据库不支持%运算符(比如部分老版本数据库),可以用MOD函数替代,写法如下:

SELECT 
    YEAR,
    MOD(ROW_NUMBER() OVER (ORDER BY YEAR) - 1, 3) + 1 AS RowNumber
FROM your_table;

把上述SQL里的3换成任意你需要的行数X,就能实现每X行重置一次行号的效果,完全适配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:29:41