Postgres:选择值的总和,然后再次求和

t B*_*ook 9 postgresql select sum

我尝试了很多,但找不到正确的方法.如果我在Postgres中选择值并对它们求和,它看起来像这样:

SELECT name,sum(size) as total
FROM mytable group by name order by name;
Run Code Online (Sandbox Code Playgroud)

我怎样才能改变这一点,所以它总计所有的值?我想我需要一个subselect但是如何?

doc*_*ore 24

试试这个:

SELECT sum(a.total)
FROM (SELECT sum(size) as total
      FROM mytable group by name) a
Run Code Online (Sandbox Code Playgroud)

更新 我很抱歉,我没有在同一个查询中读到你想要的一切.因此,greg的答案更好.但是,如果你有postgresql版本> = 9,还有其他可能性:

WITH mytableWith (name, sum) as
     (SELECT name, sum(size)
      FROM mytable
      GROUP BY name)
SELECT 'grand total' AS name, 
       sum(sum) AS sum
FROM mytableWith
UNION ALL
SELECT name, sum
FROM mytableWith
Run Code Online (Sandbox Code Playgroud)


小智 8

我会在 POSTRGESQL 上使用 ROLLUP 函数:

SELECT name,sum(size) as total
FROM mytable 
group by ROLLUP(name )
order by name;

Run Code Online (Sandbox Code Playgroud)

这将为您提供聚合的任何值的总计,也可用于聚合多个列。

希望能帮助到你!