Somar horas oracle

5 respostas
A

Bom dia pessoal!

Tenho o seguinte caso tenho uma tabela com uma coluna onde ficam as horas ‘09:00:00’, eu preciso efetuar uma soma de todas essas horas, como eu faço isso? o SUM nao funciona.

valeu pessoal.

5 Respostas

douglasjam

Em oracle você soma com + mesmo…
select horaX+horaY from table
ou sum(horas) para somar tuplas

qlq dúvida veja sites de consulta de referência

http://psoug.org/reference/date_func.html

A

douglasjam:
Em oracle você soma com + mesmo…
select horaX+horaY from table
ou sum(horas) para somar tuplas

qlq dúvida veja sites de consulta de referência

http://psoug.org/reference/date_func.html

sem querer abusar mais como eu somaria todas as linhas desta coluna?

E

Tenta essa consulta amigo:

select sum( to_char( to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'hh24' ) ) + sum( to_char( to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'mi' ) ) / 60 + -- minutos em horas ( sum(to_char(to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'ss' ) ) / 60 ) / 60 -- segundos em horas from tabela

Caso a coluna já esteja em formato de data entao retire o TO_DATE. Vc tem de converter a coluna para para data e entao extrair cada campo da hora e fazer os somatórios individuais para depois somar tudo e ter o total de horas. Espero que ajude. []'s.

A

edsonregis:
Tenta essa consulta amigo:

select sum( to_char( to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'hh24' ) ) + sum( to_char( to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'mi' ) ) / 60 + -- minutos em horas ( sum(to_char(to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'ss' ) ) / 60 ) / 60 -- segundos em horas from tabela

Caso a coluna já esteja em formato de data entao retire o TO_DATE. Vc tem de converter a coluna para para data e entao extrair cada campo da hora e fazer os somatórios individuais para depois somar tudo e ter o total de horas. Espero que ajude. []'s.

blz cara valeu.

mais quando tem essa sequencia de horas no banco

00:10:00
03:20:00
02:30:00
07:10:00
02:30:00
00:20:00
03:40:00
02:50:00
21:55:00
01:20:00
18:15:00
02:40:00
01:30:00
01:10:00

e eu somo da 69,33333333333333333333333333333333333333 ao inves de 21:20:00 sabe oq posso fazer?

valeu.

E

Testa essa consulta então:

select sum( to_char( to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'hh24' ) ) + -- Soma das horas round( ( ( sum( to_char( to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'mi' ) ) -- SOMA DE TODOS OS MINUTOS + round( sum( to_char( to_date( COLUNA_HORA, 'hh24:mi:ss' ), 'ss' ) ) / 60 ) ) / 60 ) -- TODOS OS SEGUNDOS EM MINUTOS, ARREDONDADOS ) -- arredondando os minutos em horas || ':' || mod( sum(to_char(to_date(COLUNA_HORA, 'hh24:mi:ss'), 'mi') ), 60 ) -- minutos RESTANTES dos minutos convertidos em HORAS || ':' || mod( sum(to_char(to_date(COLUNA_HORA, 'hh24:mi:ss'), 'ss') ), 60 ) -- segundos RESTANTES dos segundos convertidos em MINUTOS from TABLE

[]'s.

Criado 15 de março de 2011
Ultima resposta 15 de mar. de 2011
Respostas 5
Participantes 3