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.
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.
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
[quote=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[/quote]
sem querer abusar mais como eu somaria todas as linhas desta coluna?
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.
[quote=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.[/quote]
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.
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.