相关疑难解决方法(0)

如何在不使用`GROUP BY`的情况下进行聚合?

我有如下查询

SELECT a.*, b.*

(SELECT ATTR1, ATTR2, sum(QUANTITY) AS TOTAL_QTY,
ATTR3 FROM TABLE_A
WHERE ATTR4 > 0
GROUP BY ATTR1, ATTR2, ATTR3) a,

TABLE_B b

WHERE a.ATTR1 = b.ATTR1
AND a.ATTR2 = b.ATTR2
Run Code Online (Sandbox Code Playgroud)

GROUP BYATTR1需要计算正确的TOTAL_QTY,但唯一的原因是我将其他属性分组,因为Oracle要求if GROUP BY子句存在,那么所有SELECT属性也应该在GROUP BY子句中.

这意味着每次我需要Table_A中的此查询中的属性时,我也需要将其放入GROUP BY.这不仅看起来很丑陋,而且可能会产生性能影响,也许会产生不可预见的副作用.

如何TOTAL_QTYATTR1没有GROUP BY子句的情况下重写上面的查询来计算每个组?

sql oracle group-by aggregate-functions

1
推荐指数
1
解决办法
306
查看次数

标签 统计

aggregate-functions ×1

group-by ×1

oracle ×1

sql ×1