Jahresumsatz in Tages Grupieren aber auch mit 0

Husker

Neuer Benutzer
Beiträge
2
Hallo zusammen ...
ich möchte gerne ein Diagramm erstellen das die umsätze Pro Tag über ein Jahr verteilt anzeigt
dazu würde ich gerne eine Summe pro Tag bilden

SELECT SUM(voucher_sum) as summe, voucherdate FROM Vouchers GROUP BY voucherdate ORDER BY voucherdate

eigentlich fast genau das was ich will mit einem Problem:
Wenn an einem Tag z.b. keine Umsätze gemacht wurden weil Sonn oder Feiertrag war tauchen diese tage also nicht mit in der Auswertung auf .. kann ich den SQL irgendwie so umbauen das er fehlende Tage mit "0" ermittelt ?

Danke schon einmal im vorraus
 
Werbung:
Einfach gegen eine Tabelle joinen, die diese Datumswerte enthält. In PostgreSQL gibt es eine sehr praktische Funktion, solche Tabellen 'on the fly' zu erzeugen. Eine Demo:

Code:
test=*# select * from umsatz ;
   datum    | umsatz
------------+--------
 2018-06-04 |     10
 2018-06-04 |     15
 2018-06-06 |     25
 2018-06-07 |     20
(4 Zeilen)
te
test=*# select d::date from generate_series ('2018-06-04'::date,'2018-06-10'::date,'1day') d left join umsatz u on d.d=u.datum;
     d     
------------
 2018-06-04
 2018-06-04
 2018-06-05
 2018-06-06
 2018-06-07
 2018-06-08
 2018-06-09
 2018-06-10
(8 Zeilen)
test=*# select d::date, sum(u.umsatz) from generate_series ('2018-06-04'::date,'2018-06-10'::date,'1day') d left join umsatz u on d.d=u.datum group by d.date;
     d      | sum
------------+-----
 2018-06-04 |  25
 2018-06-09 |   
 2018-06-10 |   
 2018-06-05 |   
 2018-06-07 |  20
 2018-06-08 |   
 2018-06-06 |  25
(7 Zeilen)

test=*#

st=*# select d::date from generate_series ('2018-06-04'::date,'2018-06-10'::date,'1day') d left join umsatz u on d.d=u.datum;
     d     
------------
 2018-06-04
 2018-06-04
 2018-06-05
 2018-06-06
 2018-06-07
 2018-06-08
 2018-06-09
 2018-06-10
(8 Zeilen)
 
Zurück
Oben