Agrupar hora em um intervalo

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Sáb, 07 Out 2006 11:43 am

Bom dia pessoAll.

Tenho um banco onde cada registro corresponde a uma entrada em um estacionamento. Armazeno as entradas no campo datahora_entrada e gostaria de obter o total de entradas em um intervalo determinado...
por exemplo 15 ou 30 minutos.

Este script funciona porém para cada data/hora ele traz as ocorrências...
gostaria de agrupar por um intervalo (15 / 30 minutos) para diminuir
o tamanho do relatório e facilitar a interpretação dos gerentes :

"select datahora_entrada,Count(data_hora_entrada) total from Registro
group by datahora_entrada
order by total"




Alguém sabe como construir este script ?

[]s
William Gustavo
Localização: Campo Grande

Mensagemem Seg, 09 Out 2006 12:47 pm

Você pode fazer o seguinte:
Código: Selecionar todos
select
  a.cd_cliente
, a.dt_atualizacao
, trunc((a.dt_atualizacao - trunc(a.dt_atualizacao) )*24*60/  15  )
  agrupador
from tb_cliente a
order by 3 desc


No exemplo acima, estou criando um campo agrupador -> no caso acima, de 15 em 15 minutos. Se mudar o 15 pra 30, fica de meia e meia hora.

Veja o exemplo:
Código: Selecionar todos
SQL> select
  2    a.cd_cliente
  3  , to_char(a.dt_atualizacao,'hh24:mi:ss') data
  4  , trunc((a.dt_atualizacao - trunc(a.dt_atualizacao) )*24*60/  15  )
  5    hora
  6  from tb_cliente a
  7  order by 3 desc, a.dt_atualizacao
  8  /

CD_CLIENTE DATA           HORA
---------- -------- ----------
     11295 19:34:16         78
     11009 19:36:08         78
     11025 19:36:55         78
     10124 19:37:59         78
     10096 19:19:36         77
      2039 19:00:40         76
      6611 18:45:06         75
      3595 18:30:46         74
      3539 18:32:03         74
      6669 18:30:43         74
      3596 18:33:10         74
      2874 18:36:49         74
      6774 18:35:44         74
      3124 18:28:02         73
      4658 18:29:20         73
     10406 18:15:22         73
      5019 18:00:18         72
      6368 18:09:43         72
      5602 18:10:14         72
      1916 18:05:41         72
      7181 18:01:31         72
      7389 18:01:03         72
      7271 18:00:28         72
      6941 18:00:37         72
      3501 18:06:16         72
      5287 18:00:44         72
      4456 18:03:37         72
      6613 18:02:46         72
     10443 18:08:25         72
     10643 18:00:24         72
     11266 18:00:37         72
     11464 18:07:45         72
     11662 18:05:28         72
     11663 18:06:23         72
      4051 17:53:15         71
      5248 17:49:43         71
      5831 17:49:46         71
      5670 17:48:35         71
      5725 17:51:16         71
      5909 17:47:55         71
      4654 17:53:42         71
      4249 17:45:30         71
      4306 17:46:31         71
      4308 17:49:09         71
      5045 17:49:23         71
      5215 17:50:29         71
      3450 17:52:34         71


Talvez exista uma forma melhor pra isso, mas acho que quebra o galho.
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes