Google+ Followers

maandag 3 januari 2011

PostgreSQL en windowing.

Iedereen die met PostgreSQL werkt heeft wel gehoord van de windowing functies maar wat doen ze nu eigenlijk en wat kun je er nu feitelijik mee?

Kort samengevat kun je door middel van windowing functies gegevens ophalen over de relatie van records tot andere records die iets gemeen hebben. Dat klinkt heel erg als GROUP BY, en dat is het ook, met als grote verschil dat je gewoon alle records blijft terugkrijgen. Je kunt dus b.v. alle records van een personeelsdatabase ophalen en per personeelslid gegevens krijgen over hoe hij zich verhoudt tot andere personeelsleden uit dezelfde afdeling.

Een iets directer nut zal waarschijnlijk zijn dat je per record kunt ophalen hoeveel een kolomwaarde verschilt van het volgende of vorige record in een bepaalde sortering. Die informatie kun je dus ophalen tegelijk met het record zelf, er is geen aparte query meer voor nodig, ook niet in een subquery of iets dergelijks.

Verder kun je er running-totals mee maken, rangorde berekenen (1e, 2e, 3e plaats), gemiddelde, totalen etc mee berekenen, en als klap op de vuurpijl kun je per record ook informatie ophalen over het eerste of laatste record uit de groep.



Voor meer informatie, zie windowing queries op yapf.net