Hey All,
ich möchte mir ein einfaches Kassenbuch erstellen.
CREATE TABLE cashbox(
id serial,
currenttime TIMESTAMP NOT NULL DEFAULT NOW(),
description TEXT,
amount DECIMAL( 12, 2 ) DEFAULT NULL
);
Wie kann ich den Saldo und die aktuelle Differenz zum Vortag abfragen??
Ich habe schon mit LAG experimentiert - doch irgendwie will es nicht gelingen.
Dank und Gruß
Ronny
test=*# select *, sum(amount) over (order by currenttime) as saldo from cashbox;
id | currenttime | description | amount | saldo
----+---------------------+-------------+--------+--------
1 | 2020-06-10 00:00:00 | | 100.00 | 100.00
2 | 2020-06-11 00:00:00 | | -80.00 | 20.00
3 | 2020-06-12 00:00:00 | | 22.00 | 42.00
4 | 2020-06-13 00:00:00 | | 50.00 | 92.00
(4 rows)
die Differenz zum Vortag ist der Betrag des Tages, oder hab ich was falsch verstanden?
Danke für die Antwort.
Die Differenz zum Vortag ist der Saldo um Null Uhr minus der aktuelle Saldo.
Vielleicht hast du da ja eine Idee…
VG Ronny
Moin,
pre-Kaffee - Idee:
test=*# select * from cash;
ts | betrag
---------------------+--------
2020-06-14 10:00:00 | 10
2020-06-15 06:00:00 | -100
2020-06-15 09:00:00 | 150
(3 rows)
test=*# select *, sum(betrag) over (order by ts), sum(betrag) over (partition by ts::date order by ts) umsatz_tag, sum(betrag) over (order by ts)-sum(betrag) over (partition by ts::date order by ts) + betrag from cash ;
ts | betrag | sum | umsatz_tag | ?column?
---------------------+--------+-----+------------+----------
2020-06-14 10:00:00 | 10 | 10 | 10 | 10
2020-06-15 06:00:00 | -100 | -90 | -100 | -90
2020-06-15 09:00:00 | 150 | 60 | 50 | 160
(3 rows)
test=*#