Berechnung nach Monat/Jahr in einem View

Putzmann

Benutzer
Beiträge
7
Hallo zusammen,
ich habe ein View welches mir folgendes Ergebnis bringt.
41481276rb.png

Wie muss meine SELECT Abfrage lauten, wenn ich
die Menge2020*100/Menge2019 also 5*100/10 rechnen möchte?
Im weiteren dann auch mit den EKs und VKs so rechnen.
Das Ergebnis sollte dann so aussehen.
41481288vs.png

Geht das so überhaupt?

Danke!
 
Werbung:
Um auf nicht relationale Daten zuzugreifen, sondern gemäß einer vorgegebenen Sortierung auf vorige oder nächste Datensätze oder Gruppen und ähnliches verwendet man sofern verfügbar am besten "Window Functions". Hier z.B. lag() oder lead().

Mit diesen SQL Features erreicht man eine Funktionalität, die mit der eines Spreadsheetprogramms vergleichbar ist, wenn es um relative Bezüge zwischen Datensätzen geht.
 
um das mal, mit vereinfachten daten (nur Menge) mal zu zeigen...

Code:
edb=*# select * from putzmann ;
 monat | jahr | menge
-------+------+-------
     1 | 2019 |    10
     1 | 2020 |     5
     2 | 2020 |     2
     2 | 2019 |     3
     3 | 2020 |    20
     3 | 2019 |    13
(6 rows)

edb=*# with foo as (select monat, jahr, menge, row_number() over (partition by monat order by jahr desc) as r from putzmann ),foo2 as (select monat, jahr, menge, lead(menge) over(partition by monat order by jahr) from foo order by monat, jahr) select monat, lead*100/menge from foo2 where lead is not null;
 monat |       ?column?       
-------+----------------------
     1 |                   50
     2 |  66.6666666666666667
     3 | 153.8461538461538462
(3 rows)

edb=*#

Du hattest also Rundungsfehler in Deinem Beispiel ...
 
Werbung:
Wahnsinn, für mich ist das ja alles Neuland, wie Mutti sagen würde. ;)
Partition, Lead, row_number(). Jetzt geht es erstmal an das Verstehen
Danke
 
Zurück
Oben