pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Bob Singleton <bsingleton@ibss.net>
To: Rodrigo De León <rdeleonp@gmail.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: calculate time diffs across rows with single timestamp
Date: Wed, 13 Jun 2007 14:48:47 -0400
Message-ID: <46703C0F.9080506@ibss.net> (raw)
In-Reply-To: <1181753515.419178.63440@j4g2000prf.googlegroups.com>
References: <467018B0.30108@ibss.net>
	<1181753515.419178.63440@j4g2000prf.googlegroups.com>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Rodrigo De Le&oacute;n wrote:
<blockquote
 cite="mid1181753515.419178.63440@j4g2000prf.googlegroups.com"
 type="cite">
  <pre wrap="">On Jun 13, 11:17 am, <a class="moz-txt-link-abbreviated" href="mailto:bsingle...@ibss.net">bsingle...@ibss.net</a> (Bob Singleton) wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">Any suggestions on how I can build a result set that would return

ASSET 001 AAA 1:00 (1 hour)
ASSET 001 BBB 0:10 (10 minutes)
ASSET 001 CCC 0:08 (8 minutes)
ASSET 001 DDD {difference between timestamp and now()}
ASSET 002 AAA 0:03 (3 minutes)
ASSET 002 BBB {difference detween timestamp and now()}
ASSET 003 AAA{diff between timestamp and now()}
    </pre>
  </blockquote>
  <pre wrap=""><!---->
SELECT
TYPE, ID, STATUS
, (COALESCE(
	(SELECT MIN(DATETIME) FROM STATUSLOG
	WHERE TYPE = S.TYPE AND ID = S.ID AND DATETIME &gt; S.DATETIME)
	, NOW()::TIMESTAMP
	) - DATETIME) AS DURATION
FROM STATUSLOG S
ORDER BY TYPE, ID, STATUS


---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

  </pre>
</blockquote>
Awesome - thank you very much! Slightly modified to collapse by TYPE /
ID / STATUS<br>
<br>
<pre wrap="">SELECT
TYPE, ID, STATUS, SUM(
    (COALESCE(
	(SELECT MIN(DATETIME) FROM STATUSLOG
	WHERE TYPE = S.TYPE AND ID = S.ID AND DATETIME &gt; S.DATETIME)
	, NOW()::TIMESTAMP
	) - DATETIME))
FROM STATUSLOG S
ORDER BY TYPE, ID, STATUS

Thanks for the lesson!

Bob Singleton
</pre>
</body>
</html>



view thread (3+ messages)

Message-ID: <46703C0F.9080506@ibss.net>
Permalink:  ../46703C0F.9080506@ibss.net/
Also on:    postgresql.org/message-id/46703C0F.9080506@ibss.net

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: bsingleton@ibss.net, rdeleonp@gmail.com
  Subject: Re: calculate time diffs across rows with single timestamp
  In-Reply-To: <46703C0F.9080506@ibss.net>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox