Re: Query Assistance
От | D'Arcy J.M. Cain |
---|---|
Тема | Re: Query Assistance |
Дата | |
Msg-id | 20071212123129.ad22c7ce.darcy@druid.net обсуждение исходный текст |
Ответ на | Query Assistance ("Gary Chambers" <gwchamb@gmail.com>) |
Ответы |
Re: Query Assistance
|
Список | pgsql-sql |
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 ( starttimetimestamp without time zone DEFAULT now() NOT NULL, -- Timestamp of power on ( endtime timestamp without timezone, -- 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.
В списке pgsql-sql по дате отправления: