[postgresql-it] determinazione 'velocità minima'

  • From: "Riccardo (SCASI)" <r.penco@xxxxxxxxxxxx>
  • To: postgresql-it <postgresql-it@xxxxxxxxxxxxx>
  • Date: Tue, 01 Apr 2008 16:49:29 +0200

ciao a tutti,

per misurare la produzione di macchinari abbiamo sviluppato una macchinetta contacolpi.
I valori che vengono misurati ogni 30 secondi vengono poi inseriti in una tabella in un db PostgreSQL.
Mi si richiede di determinare la velocità minima della produzione ma non so come determinarla.
Il problema è che devo riuscire a considerare solo le misure 'a pieno regime' togliendo quindi:
1) quelle dovute ai setup del macchinario
2) quelle dovute agli intervalli di 30 secondi solo parzialmente utilizzati (per esempio la macchina comincia a lavorare alle 10:00:15 e la misura la faccio alle 10:00:30)

fondamentalmente devo 'trovare il minimo quando i valori delle misure sono stabilizzati' (praticamente il grafico che riporta la misura come y e la data della misura come x è più o meno orizzontale)

La tabella che continene i dati è:

create table counts
(
  countid serial not null primary key,
  ctrl integer,
  c integer,
  cd timestamp without time zone,
  c_epoch integer
)

io ho 'risolto' così:

select min(t.c) * 120 as vmin, max(t.c) * 120 as vmax
from (
  select c1.cd, c1.c_epoch, c1.c, abs(c2.c - c3.c) as diff
  from counts c1
    inner join counts c2 on c1.c_epoch=c2.c_epoch-30
    inner join counts c3 on c1.c_epoch=c3.c_epoch+30
  where c1.c_epoch >= 1203461520
    and c1.c_epoch < 1203577200
    and c1.ctrl = 0
    and c1.c > 8
    and c2.c > 8
    and c3.c > 8
    and abs(c2.c - c3.c) < 8
) t

cioè prendo 3 misure consecutive e controllo che siano con valori più o meno costanti.
Vorrei però riuscire a trovare una soluzione più elegante e soprattutto più veloce.

Qualcuno ha qualche suggerimento ?

grazie e ciao
riki

Other related posts:

  • » [postgresql-it] determinazione 'velocità minima' - Riccardo (SCASI)