16

いろいろ試しましたが、正しい方法が見つかりません。Postgres で値を選択して合計すると、次のようになります。

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

これを変更して、すべての値を合計するようにするにはどうすればよいですか? サブセレクトが必要だと思いますが、どうすればよいですか?

4

4 に答える 4

35

これを試して:

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

更新 申し訳ありませんが、すべてを同じクエリに入れたいとは読んでいません。このため、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
于 2012-08-22T10:20:25.727 に答える
4

同じ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;

お役に立てば幸いです…</p>

于 2012-08-22T11:37:56.370 に答える
3

これはあなたを助けるはずです:

select sum(innerselect.innertotal) as outertotal from 
    (select sum(size) as innertotal from mytable group by name) as innerselect
于 2012-08-22T10:20:42.270 に答える