Betrag in folge der Zeilen addieren

Dossor

Neuer Benutzer
Beiträge
3
Hallo,
wie kann man per SQL Befehl, die Zeilen zu addieren?
Siehe Anhang unter SQL: Betrag in folge addieren.
Kann mir da einer denn Befehl geben.
Danke

1662553407276.png
 
Werbung:
Code:
postgres=# select * from dossor ;
 jahr | betrag 
------+--------
 2007 |     10
 2007 |     10
 2007 |     20
 2007 |     10
 2009 |     20
 2009 |     30
 2009 |     20
 2009 |     10
 2010 |    100
 2010 |     50
(10 rows)

postgres=# select jahr, sum(betrag) as betrag from dossor group by jahr;
 jahr | betrag 
------+--------
 2009 |     80
 2010 |    150
 2007 |     50
(3 rows)

postgres=# with foo as (select jahr, sum(betrag) as betrag from dossor group by jahr) select jahr, betrag + coalesce(lag(betrag) over (order by jahr),0) as betrag from foo;
 jahr | betrag 
------+--------
 2007 |     50
 2009 |    130
 2010 |    230
(3 rows)

postgres=#
 
Bei Dir wird was Falsch berechnet, es sollte folgendes Ergebnis sein, die Abfrage scheint nicht zu stimmen.

jahr | betrag
------+--------
2007 | 50
2009 | 130
2010 | 280
 
Bei Dir wird was Falsch berechnet, es sollte folgendes Ergebnis sein, die Abfrage scheint nicht zu stimmen.

jahr | betrag
------+--------
2007 | 50
2009 | 130
2010 | 280
Danke für den Hinweis, lag() war natürlich hier Bullshit, ist ja die insgesamte Summe gesucht...

Code:
postgres=# with foo as (select jahr, sum(betrag) as betrag from dossor group by jahr) select jahr, sum(betrag) over (order by jahr) as betrag from foo;
 jahr | betrag 
------+--------
 2007 |     50
 2009 |    130
 2010 |    280
(3 rows)

postgres=#
 
oder kürzer:

Code:
postgres=# select distinct jahr, sum(betrag) over (order by jahr) from dossor order by jahr;
 jahr | sum 
------+-----
 2007 |  50
 2009 | 130
 2010 | 280
(3 rows)

postgres=#
 
Werbung:
Zurück
Oben