On Jan 26, 2013, at 13:32, Rafał Pietrak <rafal@xxxxxxxxxxxxxxxxxx> wrote: > I have a usage recording table: CREATE TABLE readings(tm timestamp, bytesin int, bytesout int); > > The readouts are made "occasionally" - the timespan between the readouts are not very precise, but there is a lot of those readouts. > > when presenting data, for every readout I need to compute the difference between it and the one immediately preceding it, and divide that by respective measurement interval. You don't need a self-join, you need a window function. See: http://www.postgresql.org/docs/9.1/static/tutorial-window.html For example: SELECT timestamp, lag(timestamp) OVER (ORDER BY timestamp) FROM readings; -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general