it-swarm.com.de

Postgres: Wählen Sie die Summe der Werte und addieren

Ich habe viel versucht, finde aber nicht den richtigen Weg. Wenn ich in Postgres Werte auswähle und diese summiere, sieht das so aus:

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

Wie kann ich das so ändern, dass es auch alle Werte summiert? Ich denke, ich brauche eine Unterauswahl, aber wie?

7
t Book

Versuche dies:

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

UPDATEEs tut mir leid, ich lese nicht, dass Sie alles in derselben Abfrage haben wollen. Aus diesem Grund ist die Antwort von greg besser. Andere Möglichkeiten, wenn Sie eine Postgresql-Version> = 9 haben:

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
18
doctore

Wenn Sie alle Ergebnisse mit demselben SELECT-Befehl erhalten möchten, können Sie beispielsweise Folgendes tun

SELECT 
  'grand total' AS name, 
   sum(size) AS sum 
FROM 
  mytable 
UNION ALL 
SELECT 
  name, 
  sum(size) AS sum 
FROM 
  mytable 
GROUP BY 
  name;

Ich hoffe es hilft…

2
greg

Nun, das sollte dir helfen:

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

Ich würde die ROLLUP-Funktion in POSTGRESQL verwenden:

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

Dadurch erhalten Sie eine Gesamtsumme aller Werte, die Sie aggregieren, und kann auch zum Aggregieren mehrerer Spalten verwendet werden.

Ich hoffe es hilft!

0
oyeoyeoye