Wachstum ermitteln

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

Hallo Lenno,

Das Problem kannst Du nur lösen, wenn Du mittels PL/pgSQL eine Funktion erstelltst.



mfg

fristo

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. :confused:

Grüße
Lenno

Ja.

Andreas

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

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

ich würde mal sagen er meint das wachstum in % :slight_smile:
zumindest stimmen die zahlen dann

Hallo!

Prozentuales Wachstum war gemeint. Steht auch im ursprünglichen Posting.

Periode ist noch keine verloren gegangen. :wink:
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