Sql 计算和添加Oracle中多列的总计行
我不熟悉sql和oracle。下面是一个复杂而耗时的查询的结果。 我想计算col2,col3和col4的和。我想在表的末尾添加一行totals 电流输出Sql 计算和添加Oracle中多列的总计行,sql,oracle,group-by,union,Sql,Oracle,Group By,Union,我不熟悉sql和oracle。下面是一个复杂而耗时的查询的结果。 我想计算col2,col3和col4的和。我想在表的末尾添加一行totals 电流输出 id rate rate2 col2 col3 col4 1 2,3 11 10 36 10 1 2,4 2 229,32 36 229,32 1 3 44 229,32 36 229,32 1 4,
id rate rate2 col2 col3 col4
1 2,3 11 10 36 10
1 2,4 2 229,32 36 229,32
1 3 44 229,32 36 229,32
1 4,5 3,4 165,2 36 90,2
81 1,1 11 30,3 36 30,3
81 2,3 22 10 36 10
期望的结果。N代表空
id rate rate2 col2 col3 col4
1 2,3 11 10 36 10
1 2,4 2 229,32 36 229,32
1 3 44 229,32 36 229,32
1 4,5 3,4 165,2 36 90,2
81 1,1 11 30,3 36 30,3
81 2,3 22 10 36 10
N N N 674,14 216 599,14
我已经做了一些搜索,我能够管理这个使用工会。但是存在性能问题,我正在运行相同的查询,计算总计并追加。底线是我不想两次运行同一个耗时的查询。有没有其他办法来处理这个问题
提前谢谢 最简单的方法可能是使用union all: 然后,分组集是另一个选项:
group by grouping sets ( (id, rate, rate2), () )
最简单的方法可能是使用union all: 然后,分组集是另一个选项:
group by grouping sets ( (id, rate, rate2), () )
您可以使用CTE和MATERIALIZE提示获取所需的输出,如下所示:
with cte as (SELECT /*MATERIALIZE*/ <your query after select>)
select c.*
from cte c
union all
select null, null, null, sum(col2), sum(col3), sum(col4)
from cte;
未记录的物化提示使用全局临时表,因此不会或几乎不会对性能产生影响
干杯 您可以使用CTE和MATERIALIZE提示获取所需的输出,如下所示:
with cte as (SELECT /*MATERIALIZE*/ <your query after select>)
select c.*
from cte c
union all
select null, null, null, sum(col2), sum(col3), sum(col4)
from cte;
未记录的物化提示使用全局临时表,因此不会或几乎不会对性能产生影响
干杯