Bom dia, pessoal

Tenho uma tabela com os campos:
...
  hsaequ timestamp without time zone,
  hchde1 timestamp without time zone,
  hsade1 timestamp without time zone,
  hchde2 timestamp without time zone,
  hsade2 timestamp without time zone,
  hrede1 timestamp without time zone,
  hlimov timestamp without time zone,
...

Onde: 
  hsaequ - Hora de saída para o serviço
  hchde1 - Hora de chegada ao destino 1
  hsade1 - Hora de saída do destino 1
  hchde2 - Hora de chegada ao destino 2
  hsade2 - Hora de saída do destino 2
  hrede1 - Hora de retorno ao destino 1
  hlimov - Hora de liberação da equipe


Para determinar o pico de atendimento, eu fiz uma view conforme abaixo: 

...
AS SELECT

num_servico,

-- Horarios de 00 a 23 horas 
CASE
WHEN to_char(hsaequ, 'yyyy-mm-dd 00'::text || ':00')::timestamp 
BETWEEN to_char(hsaequ, 'yyyy-mm-dd HH24'::text || ':00')::timestamp AND 
    to_char(hlimov, 'yyyy-mm-dd HH24'::text || ':00')::timestamp THEN 
    1
ELSE 
    0
END as _00, 

...

CASE
WHEN to_char(hsaequ, 'yyyy-mm-dd 23'::text || ':00')::timestamp 
BETWEEN to_char(hsaequ, 'yyyy-mm-dd HH24'::text || ':23')::timestamp AND 
    to_char(hlimov, 'yyyy-mm-dd HH24'::text || ':23')::timestamp THEN 
    1
ELSE 
    0
END as _23 from servico_recursos 


A intenção desta view é determinar a ocupação da equipe em um determinado 
período.
O que estou fazendo é pegar a parte do campo que representa a hora (em hsaequ e 
hlimov) e contando  hsaequ dentro desse intervalo.
Quando estiver no intervalo, conta 1. Caso contrário, conta 0.

Exemplos de contagem (resultado da view):

hsaequ = 01-12-2013 09:21
hlimov = 01-12-2013 11:21
    09:00 = 1
    10:00 = 1
    11:00 = 1


hsaequ = 01-12-2013 07:05
hlimov = 01-12-2013 13:01
    07:00 = 1
    08:00 = 1
    09:00 = 1
    10:00 = 1
    11:00 = 1
    12:00 = 1
    13:00 = 1


Posteriormente, para construir o relatório de ocupação, outrra view se faz 
necessária:
AS SELECT 
...

sum(_00) AS soma_00, 
sum(_01) AS soma_01, 
sum(_02) AS soma_02, 
sum(_03) AS soma_03,
...
sum(_23) AS soma_23

FROM view_picos_hsaequ

WHERE ...


Finalmente, se consegui me fazer entender, gostaria de opiniões e sugestões, e 
se estou correto nesta lógica... 
Se é possível outra lógica mais precisa... Idéias...

Att   Carlos Antônio Pereira





   




_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a