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

SQL技术问询:如何按不同ASSG_ID对TOTAL_CUBE字段进行分组求和

问题解决方案

你之前报错大概率是因为使用GROUP BY时,SELECT子句中包含了未聚合、也未加入GROUP BY列表的字段(比如原语句里的dc_id、whse_id、START_DTIM),数据库无法判定多值字段的返回规则,因此抛出错误。根据你的使用场景,可选择以下两种写法:

场景1:仅需输出每个ASSG_ID对应的总立方值

不需要保留原查询的其他维度字段,直接分组聚合即可:

SELECT assg_id,
       SUM(UNIT_SHIP_CSE * prod_cub) AS TOTAL_CUBE_SUM
FROM exehoust.aseld
GROUP BY assg_id;

场景2:需要保留原查询的所有行和字段,同时展示对应ASSG_ID的总立方值

使用窗口函数实现,不需要加GROUP BY:

SELECT dc_id,
       whse_id,
       assg_id,
       START_DTIM,
       UNIT_SHIP_CSE * prod_cub AS TOTAL_CUBE,
       SUM(UNIT_SHIP_CSE * prod_cub) OVER (PARTITION BY assg_id) AS ASSG_TOTAL_CUBE
FROM exehoust.aseld;

带筛选条件的SUM IF写法

如果需要对满足特定条件的记录求和,比如仅统计指定时间区间内的立方值,可按以下写法调整:

SELECT assg_id,
       SUM(CASE WHEN START_DTIM >= '2024-01-01' THEN UNIT_SHIP_CSE * prod_cub ELSE 0 END) AS FILTERED_TOTAL_CUBE
FROM exehoust.aseld
GROUP BY assg_id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:24:04