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

基于条件聚合值:如何用SELECT语句按规则汇总Total与Value

解决方案

要实现将Table A中数据按“累计到Total和Value均非零的行”分组求和,可通过窗口函数标记分组再聚合的方式实现,以下是具体SQL代码(适用于支持窗口函数的数据库如MySQL 8+、PostgreSQL、SQL Server等):

WITH grouped_data AS (
    SELECT 
        *,
        -- 标记分组:每遇到Total和Value均非零的行,分组ID递增
        SUM(CASE WHEN Total <> 0 AND Value <> 0 THEN 1 ELSE 0 END) 
        OVER (ORDER BY Sno. ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS group_id
    FROM TableA
)
-- 按分组ID聚合求和
SELECT 
    SUM(Total) AS Total,
    SUM(Value) AS Value
FROM grouped_data
GROUP BY group_id
ORDER BY group_id;

逻辑说明

  1. 分组标记:通过SUM() OVER()窗口函数,对每行判断是否为“Total和Value均非零”的终止行——若是则加1,否则继承之前的分组ID,这样所有从起始行到终止行的记录会被归为同一组。
  2. 分组求和:按生成的group_id分组,对Total和Value分别求和,得到Table B的结果。

验证结果

  • 第1-3行(group_id=1):Total总和0+225+210=435,Value总和1+0+2=3
  • 第4-7行(group_id=2):Total总和0+0+150+150=300,Value总和0+0.5+0+0.5=1.0
    完全匹配Table B的预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 23:00:41