我有一个类似这样的结构的长查询-
with
abc as (
select ind,
sum(count) as tot
from LargeQuery
group by ind),
xyz as (
select org,
sum(count) as cnt
from LargeQuery
group by org
)
LargeQuery
有很多CTE和子查询。如您所见,LargeQuery
被计算两次。有没有一种方法可以优化此查询,使其不会运行两次?
更新
我的largequery
的格式如下。我认为我不能做with largequery as (...), abc as (...), xyz as (...)
,因为Org
和Ind
是从此largequery
中选择的,我需要在abc
和{{1 }} cte。
xyz
答案 0 :(得分:1)
我不确定您想做什么,但是您可以使用grouping sets
:
select ind, org, sum(count) as tot
from LargeQuery
group by grouping sets (ind, org);
这将同时进行两种聚合。