Hallo!
Berechnungen zwischen verschiedenen Ergebniszeilen sind mit SQL vermutlich nicht möglich. Falls trotzdem jemand eine Idee dazu hat, bin ich daran interessiert.
In einer Tabelle sind Werte aus verschiedenen Perioden. Ich möchte ermitteln, um wieviel Prozent ein Wert gegenüber der Vorperiode gewachsen ist. Die Zahlen in der Spalte wachstum sollen errechnet werden.
Tabelle
periode|wert|wachstum
1| 100|
2| 120| 20
3| 132| 10
Dankende Grüße
Lenno
fristo
11. Oktober 2007 um 12:01
2
Hallo Lenno,
Das Problem kannst Du nur lösen, wenn Du mittels PL/pgSQL eine Funktion erstelltst.
mfg
fristo
Hallo!
Berechnungen zwischen verschiedenen Ergebniszeilen sind mit SQL vermutlich nicht möglich. Falls trotzdem jemand eine Idee dazu hat, bin ich daran interessiert.
In einer Tabelle sind Werte aus verschiedenen Perioden. Ich möchte ermitteln, um wieviel Prozent ein Wert gegenüber der Vorperiode gewachsen ist. Die Zahlen in der Spalte wachstum sollen errechnet werden.
Tabelle
periode|wert|wachstum
1| 100|
2| 120| 20
3| 132| 10
Dankende Grüße
Lenno
Ads und ich haben da mal in Chemnitz zum CLT 2006 ein Workshop gemacht, wo wir an einem ähnlichen Beispiel gezeigt haben, wie das geht. Reicht Dir das als Google-Futter?
Andreas
Hallo Andreas!
Das habe ich gefunden:
PostgreSQL - the world most advanced open source database system
Ich weiß aber nicht, ob Du das meinst.
Grüße
Lenno
Du beziehst Dich möglicherweise auf den Abschnitt “Serverseitige Funktionen”.
Leider habe ich mich schlecht ausgedrückt. Ich meinte SQL ohne Functions und Procedures. Danke jedenfalls für den Hinweis!
Grüße
Lenno
Hallo!
Berechnungen zwischen verschiedenen Ergebniszeilen sind mit SQL vermutlich nicht möglich. Falls trotzdem jemand eine Idee dazu hat, bin ich daran interessiert.
In einer Tabelle sind Werte aus verschiedenen Perioden. Ich möchte ermitteln, um wieviel Prozent ein Wert gegenüber der Vorperiode gewachsen ist. Die Zahlen in der Spalte wachstum sollen errechnet werden.
Tabelle
periode|wert|wachstum
1| 100|
2| 120| 20
3| 132| 10
Dankende Grüße
Lenno
Davon abgesehen, daß Dein Bleistift offensichtlich flasch ist, kannst Du garantieren, daß die ‘periode’ stets monoton um 1 steigend ist?
Falls ja:
test=*# select * from w;
p | wert
---+------
1 | 100
2 | 120
3 | 132
(3 rows)
test=*# select w.p, w.wert, w.wert-sum(foo.wert) from w left join w foo on (foo.p=w.p-1) group by 1,2 order by 1;
p | wert | ?column?
---+------+----------
1 | 100 |
2 | 120 | 20
3 | 132 | 12
(3 rows)
Andreas
Rover
12. Oktober 2007 um 06:49
8
akretschmer:
Davon abgesehen, daß Dein Bleistift offensichtlich flasch ist, kannst Du garantieren, daß die ‘periode’ stets monoton um 1 steigend ist?
Andreas
ich würde mal sagen er meint das wachstum in %
zumindest stimmen die zahlen dann
Hallo!
akretschmer:
Davon abgesehen, daß Dein Bleistift offensichtlich flasch ist, kannst Du garantieren, daß die ‘periode’ stets monoton um 1 steigend ist?
Prozentuales Wachstum war gemeint. Steht auch im ursprünglichen Posting.
Periode ist noch keine verloren gegangen.
Könnte aber alternativ Jahr, Monat oder Woche sein.
Danke Andreas! Dein Join-Statement ist auf jeden Fall ein wertvoller Hinweis.
Beste Grüße
Lenno