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

如何调整窗口函数使每行返回分组内的最大ROW_NUMBER值?

解决方法

你可以直接用COUNT(*) OVER(PARTITION BY ddr.number)替代原有的ROW_NUMBER窗口函数,这样就能在分组内的每一行返回该分组的总行数(也就是你需要的最大行号),完全无需子查询,仅通过窗口函数实现:

COUNT(*) OVER(PARTITION BY ddr.number) max_row_number

原理说明

  • COUNT(*)搭配窗口函数时,仅指定PARTITION BY子句会统计每个分组内的总行数,这个数值恰好等于该分组内ROW_NUMBER()生成的最大行号(因为ROW_NUMBER从1开始连续递增到分组总行数)。
  • 这里不需要额外的ORDER BY子句,因为我们只需要统计分组总数量,和排序逻辑无关。

如果一定要基于原有的ROW_NUMBER逻辑推导,也可以通过嵌套窗口函数实现,但这种写法不如COUNT简洁高效:

MAX(ROW_NUMBER() OVER(PARTITION BY ddr.number ORDER BY ddr.date)) OVER(PARTITION BY ddr.number) max_row_number

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:45:38