Você pode fazer o seguinte:
Selecionar tudo
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:
Selecionar tudo
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.