pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: D'Arcy J.M. Cain <darcy@druid.net>
To: Gary Chambers <gwchamb@gmail.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: Query Assistance
Date: Wed, 12 Dec 2007 12:31:29 -0500
Message-ID: <20071212123129.ad22c7ce.darcy@druid.net> (raw)
In-Reply-To: <302670f20712120858k210dd812l8b232ce98d5d162f@mail.gmail.com>
References: <302670f20712120858k210dd812l8b232ce98d5d162f@mail.gmail.com>

On Wed, 12 Dec 2007 11:58:20 -0500
"Gary Chambers" <gwchamb@gmail.com> wrote:
> All...
> 
> I have a simple table in PostgreSQL 8.2.5:
> 
> CREATE TABLE power_transitions (
>     -- Transition ID (PK)
>     tid integer NOT NULL,
>     -- State ID (0 = Unknown, 1 = Online (AC power), 2 = Offline (Battery)
>     sid smallint NOT NULL,
>     -- Timestamp of transition
>     statetime timestamp without time zone DEFAULT now() NOT NULL,
>     -- Is this a real outage?
>     is_outage boolean DEFAULT true NOT NULL
> );
> 
> It contains a log of power outages (transitions).  I'd like to create
> query that returns a transition offline time and associated return to
> online time.  Is there a better way of handling this?  I am open to
> schema change suggestions.  Thanks very much!

Have you considered this?

CREATE TABLE power_transitions (
    -- Transition ID (PK)
    tid integer NOT NULL,
    -- Timestamp of power off (
    starttime timestamp without time zone DEFAULT now() NOT NULL,
    -- Timestamp of power on (
    endtime timestamp without time zone,
    -- Is this a real outage?  may not be needed.
    is_outage boolean DEFAULT true NOT NULL
);

The is_outage bool could be handled with special timestamps (e.g.
EPOCH) but I am not sure what it signifies to you.  Of course you have
to deal with false transitions but I don't know what your information
capture system is so I can't work out all the details but this seems
like a good base for what you want. Every row that has a valid start
and end time is a complete record of an outage.

I am also thinking of a scheme that uses two tables but I don't really
know your environment or requirements.  I am assuming that you spend
more time querying the table than updating it.  If not your problem
isn't your database, it's your power plant.  :-)

-- 
D'Arcy J.M. Cain <darcy@druid.net>         |  Democracy is three wolves
http://www.druid.net/darcy/                |  and a sheep voting on
+1 416 425 1212     (DoD#0082)    (eNTP)   |  what's for dinner.



view thread (7+ messages)  latest in thread

Message-ID: <20071212123129.ad22c7ce.darcy@druid.net>
Permalink:  ../20071212123129.ad22c7ce.darcy@druid.net/
Also on:    postgresql.org/message-id/20071212123129.ad22c7ce.darcy@druid.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: darcy@druid.net, gwchamb@gmail.com
  Subject: Re: Query Assistance
  In-Reply-To: <20071212123129.ad22c7ce.darcy@druid.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