Hi all,

For each event of each type in each interval I want to compute the sum of events referencing the same relayNet (via host) and insert/update 1 row in SumOfEvents. All intervals start at a time, minimum 5 minutes in the past, rounded down modulo 5 minutes like:

SELECT DATE_TRUNC('MINUTES', NOW () - ('0:' || (SELECT (EXTRACT('MINUTE' FROM NOW())::INT % 5) + 5 ) || ':0')::INTERVAL);



CREATE TABLE host (
  id            SERIAL  PRIMARY KEY,
  relayNetFK    INT
                REFERENCES relayNet
                        ON DELETE CASCADE
)

CREATE TABLE event (
  id            SERIAL  PRIMARY KEY,
  type          CHAR         NOT NULL
                CHECK ( type IN ('C', 'A', 'D', 'S', 'R') ),
  timeOfEvent   timestamp       NOT NULL
                        DEFAULT NOW(),
  hostfk        INT          NOT NULL
                REFERENCES host
                        ON DELETE CASCADE
)

CREATE TABLE relayNet (
  id            SERIAL  PRIMARY KEY,
  name          TEXT            NOT NULL UNIQUE
)

CREATE TYPE eventIntervals AS ENUM ('5m', '30m', '3h', '24h', '30d');
CREATE TABLE SumOfEvents (
  id            SERIAL  PRIMARY KEY,
  type          CHAR         NOT NULL
                CHECK ( type IN ('C', 'A', 'D', 'S', 'R') ),
  startTime     timestamp       NOT NULL,
  interval      eventIntervals  NOT NULL,
  value         INT,        -- sum
  relayNetFK    INT
                REFERENCES relayNet
                        ON DELETE CASCADE,

  UNIQUE (type, interval, relayNetFK)
)

Can this be done w/o procedural code?
Any hints?

Thanks, Axel
---
axel....@chaos1.de PGP-Key:29E99DD6 +49 151 2300 9283 computing @ chaos claudius


--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Reply via email to