如何创建一个新行来汇总前几行?

时间:2018-10-14 20:00:14

标签: sql amazon-redshift

对于最终输出,我想有一个表,该表的另一行是我之前各行的总和。我有点卡住。我尝试了在互联网上找到的汇总功能,但似乎对我不起作用。

到目前为止,例如:

the results of the first table but I would like to have the final output of the second

(第一个表的结果,但我想得到第二个表的最终输出)

在图像中,我当前拥有第一个表,我已选择了这些字段并从更大的表中进行了计算。但是我现在想将上面创建的第一个表用于第二个表。创建一个标题为Total的新行,并对所有其他内容进行汇总。我该怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用union all

select shop_id, subscription_plan, total_customer_a_), tot_customer_yearly
from t
union all
select shop_id, 'total', sum(total_customer_a_b), sum(tot_customer_yearly)
from t
group by shop_id;

答案 1 :(得分:0)

您可以编写一个公用表表达式(CTE)来重用总计中的总计计算,如下所示:

with
aggregated_data as (
    -- your query that produces table 1
)
select *
from aggregated_data
union 
select 
 -- list of fields or simple text values and grand total as the sum
from aggregated_data

只需确保联合的2个部分具有相同的列和数据类型集

在这种情况下,union下的部分类似于

select 
 shop_id
,'Total' 
,sum(total_customer)
,sum(total_customer_yearly)
from aggregated_table
group by 1