From: | Andreas Kretschmer <akretschmer(at)spamfence(dot)net> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: help with a query |
Date: | 2006-11-05 10:50:40 |
Message-ID: | 20061105105040.GB8761@KanotixBox |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Pedro Doria Meunier <pdoria(at)netmadeira(dot)com> schrieb:
>
> Hi all!
>
> This is most certainly a lame question but perhaps someone is gracious enough
> to lend me a hand& ;-)
>
> I have the following setup in a table:
>
> The first record which is to be found (ok easy enough :D) with a timestamp
> meets a certain condition (ignition off)
> The following record is for the event of ignition on again with a timestamp.
>
> So the question here is: how can I compute the time difference between these
> two records in a single query?
> Better yet: finding all the records that meet the first condition (ignition
> off) and the immediately following records as to compute the time difference.
> ;-)
Okay, let me try.
First, i created a similar table:
test=# select * from test;
id | nr | ts | event
----+----+----------------------------+-------
1 | 1 | 2006-11-05 11:20:34.308945 | 0
2 | 2 | 2006-11-05 11:20:41.245691 | 0
3 | 2 | 2006-11-05 11:20:43.630381 | 1
4 | 1 | 2006-11-05 11:20:49.762882 | 1
5 | 3 | 2006-11-05 11:20:55.427288 | 0
(5 rows)
As we can see, i have a column nr to identify paired rows. The
event-column is similar to your ignition (off-on -> 0-1).
The rows with id 1 and 4, and 2 and 3 paired.
There are only 0-events and paired 1-events or only a 0-event,
and only one pair for every nr.
Now i want to know the elapsed time for every nr (1 and 2) between the
0 and 1 - event:
test=# select a.id,
a.nr,
a.ts as event_off,
a.event,
b.id,
b.ts as event_on,
b.ts-a.ts as elapsed
from test a, test b
where (a.nr=b.nr and a.ts<b.ts);
id | nr | event_off | event | id | event_on | elapsed
----+----+----------------------------+-------+----+----------------------------+-----------------
1 | 1 | 2006-11-05 11:20:34.308945 | 0 | 4 | 2006-11-05 11:20:49.762882 | 00:00:15.453937
2 | 2 | 2006-11-05 11:20:41.245691 | 0 | 3 | 2006-11-05 11:20:43.630381 | 00:00:02.38469
(2 rows)
Hope that helps, Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknow)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
From | Date | Subject | |
---|---|---|---|
Next Message | Naz Gassiep | 2006-11-05 11:09:48 | max_fsm_pages |
Previous Message | Andreas Kretschmer | 2006-11-05 10:17:24 | Re: Converting a timestamp to a time |