Prozentuelle Veränderungen berechnen

Oft ist es nötig, die prozentuelle Veränderung zwischen zwei oder mehreren Perioden auszuwerten. Das folgende Beispiel zeigt, wie das idealerweise gemacht werden kann:

test=# SELECT tstamp, revenue, 
		round((revenue::numeric - delay) / revenue * 100, 2) 
			|| ' %' AS growth 
	FROM (SELECT tstamp, revenue, lag(revenue, 1) 
				OVER (ORDER BY tstamp) AS delay 
			FROM 	t_business 
			WHERE 	country = 'DE' 
			ORDER BY tstamp) AS x;
   tstamp   | revenue |  growth  
------------+---------+----------
 2009-10-01 |      20 | 
 2009-10-02 |      18 | -11.11 %
 2009-10-03 |      23 | 21.74 %
 2009-10-04 |      26 | 11.54 %
(4 rows)

Wir schieben die Windowing Function einfach in ein Subselect und berechnen dann im nachgelagerten Code die Differenz und formatieren den String entsprechend.




Cybertec Schönig & Schönig GmbH
PostgreSQL support, training, consulting
www.postgresql-support.de