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

按连续分组统计Balance起止值的SQL实现求助

按Balance连续分组统计起始/结束值的解决方案

假设你的数据表包含用于排序的字段(比如自增ID或交易时间)和Balance字段,以下是无需普通GROUP BY即可实现连续分组统计的方案:

1. 生成连续分组标识

利用窗口函数的差值来标记连续相同Balance的分组:

SELECT
    排序字段名,
    Balance,
    ROW_NUMBER() OVER (ORDER BY 排序字段名) - 
    ROW_NUMBER() OVER (PARTITION BY Balance ORDER BY 排序字段名) AS group_id
FROM 你的表名

这里的group_id会为每一段连续相同的Balance分配唯一标识,不同连续段的group_id不同。

2. 聚合获取起始/结束值

基于生成的分组标识,聚合得到每组的起始和结束值:

WITH grouped_data AS (
    SELECT
        排序字段名,
        Balance,
        ROW_NUMBER() OVER (ORDER BY 排序字段名) - 
        ROW_NUMBER() OVER (PARTITION BY Balance ORDER BY 排序字段名) AS group_id
    FROM 你的表名
)
SELECT
    Balance,
    MIN(排序字段名) AS 起始值,
    MAX(排序字段名) AS 结束值
FROM grouped_data
GROUP BY group_id, Balance
ORDER BY 起始值;

说明

  • 把代码中的排序字段名替换成你表中用于确定顺序的字段(比如ID、transaction_time),确保分组是按业务顺序的连续相同Balance段。
  • 该方法通过窗口函数差值识别连续分组,避免了普通GROUP BY将所有相同Balance合并为一组的问题,完全匹配你需要的连续分组统计需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:24:20