2012-08-22 21 views
6

私はたくさん試しましたが、正しい方法を見つけることができません。 私はPostgresの中で値を選択し、それらを合計した場合、それは次のようになります。Postgres:値の合計を選択して再度これを合計します

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

、それはまた、合計のすべての値を合計してどのように私はこれを変更することができますか?私は副次的な選択が必要だと思いますが、どうですか?

答えて

16

このお試しください:ごめんなさい

SELECT sum(a.total) 
FROM (SELECT sum(size) as total 
     FROM mytable group by name) a 

UPDATE を、私はあなたが同じクエリでそれをすべてを望んでいることを読んでいません。この理由から、答えは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 
2

をまあ、これはあなたを助ける必要があります。

select sum(innerselect.innertotal) as outertotal from 
    (select sum(size) as innertotal from mytable group by name) as innerselect 
3

あなたは同じで、すべての結果がSELECTたい場合は、

ような何かを行うことができます
SELECT 
    'grand total' AS name, 
    sum(size) AS sum 
FROM 
    mytable 
UNION ALL 
SELECT 
    name, 
    sum(size) AS sum 
FROM 
    mytable 
GROUP BY 
    name; 

関連する問題