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

视图中数据按分组统一显示计数而非递增编号的SQL调整方案

调整方案说明

这个问题很常见,我来帮你快速搞定SQL语句的调整~

问题出在你窗口函数里的ORDER BY table.date子句——它让count()变成了累计计数,只会从1开始逐行递增到分组的总条数。要让分组内所有行都显示总记录数,只需要去掉这个ORDER BY即可:

修改后的SQL语句

count(table.a) OVER (PARTITION BY table.b, tdahw.a) AS row_count

或者你也可以用count(*)来替代count(table.a)(只要table.a不为NULL,效果完全一致):

count(*) OVER (PARTITION BY table.b, tdahw.a) AS row_count

原理解释

当OVER子句中包含ORDER BY时,窗口的默认范围是RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW,也就是从分组的第一行到当前行的区间,所以count会逐行累计。而去掉ORDER BY后,窗口范围默认扩展到整个分组,此时count计算的是分组内的总记录数,因此每一行都会显示这个总数。

举个例子,假设table.b和tdahw.a的某个分组里有3条数据,修改后的语句会让这3行的row_count都显示为3,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:57:51