2011/10/5 thomas veymont <thomas.veym...@gmail.com>

> hello,
>
> let's say that each rows in a table contains a start time and a end
> time ("timeinterval" type),
>

there is no such type ( no result for select * from pg_type where typname ~
'timeinterval' ).
can you show exact table structure (output of psql "\d" or better, CREATE
TABLE command)?


but the index are not ordered nor consecutive, e.g :
>
> $ select * from T order by starttime
>
> index  | starttime    |   endtime
> ---------+-----------------+-----------------
> 3        |   t1             |  t2
> 1        |   t3             |  t4
> 18      |   t5             |  t6
> 12      |   t7             |  t8
>
> I want a result that shows time gaps and overlaps in this table, that is :
>
> delta
> ---------+
> t3 - t2 |
> t5 - t4 |
> t7 - t6 |
>
> how would I do that ? I guess this could be done with window function and
> lag()
> function but I don't know exactly how. Any suggestion ?
>
>

 -- assuming that you actually want lag compared to previous starttime - try
this:
select index, starttime, endtime, starttime - lag(endtime) over(order by
starttime asc) as delta from test;


PS. this question should probably go to "pgslq-sql mailing list more than
"pgsql-general".  also please give more details next time. Thanks.

Reply via email to