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

如何为week和desc列的重复值分配相同的rownumber行号

解决分组重复行的相同行号分配问题

针对你提出的需求——当week和desc列的值组合重复时分配相同行号,我们可以利用SQL的窗口函数DENSE_RANK()来完美实现。

源数据表

weekdesc
1ff
1ss
1ss
2ff
2ss
4ff
4ff
4ss
4ss

实现SQL语句

SELECT 
    week,
    `desc`,
    DENSE_RANK() OVER (PARTITION BY week ORDER BY `desc`) AS rownum
FROM your_table_name;

语句细节解释

  • PARTITION BY week:按照week列进行分组,每个week组内单独计算行号,不同week组的行号会重新从1开始计数
  • ORDER BY desc``:在每个week组内,按照desc列的值排序,确保相同的desc值会被归为同一组,分配相同的行号
  • DENSE_RANK():这个函数的核心特点是相同值会得到相同排名,且排名是连续的(不会像RANK()那样出现跳号),完全匹配你需要的“重复组合分配相同行号”的要求

执行后的期望结果

weekdescrownum
1ff1
1ss2
1ss2
2ff1
2ss2
4ff1
4ff1
4ss2
4ss2

如果你的SQL方言不支持DENSE_RANK()(比如某些旧版本数据库),也可以用分组子查询结合ROW_NUMBER()的方式变通实现,但DENSE_RANK()无疑是最简洁高效的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:32:14