たくさん試しましたが、正しい方法が見つかりません。 Postgresで値を選択して合計すると、次のようになります。
SELECT name,sum(size) as total
FROM mytable group by name order by name;
これを変更して、すべての値を合計するようにするにはどうすればよいですか?副選択が必要だと思いますが、どうすればよいですか?
これを試して:
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
POSTGRESQLでROLLUP関数を使用します。
SELECT name,sum(size) as total
FROM mytable
group by ROLLUP(name )
order by name;
これにより、集計した値の総計が得られ、複数の列の集計にも使用できます。
それが役に立てば幸い!
同じ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;
それが役に立てば幸い…
まあこれはあなたを助けるはずです:
select sum(innerselect.innertotal) as outertotal from
(select sum(size) as innertotal from mytable group by name) as innerselect