Página 1 de 1

AVG não funciona para Média em campo Hora

Enviado: Sáb, 20 Fev 2021 4:51 pm
por oracle_student
Preciso de uma ajuda
Tenho um campo que armazena a quantidade de horas em minutos. Converti esse campo para o formato de hora, mas não sei se foi a melhor forma de fazer isso.
Fato que eu preciso fazer a média desse campo com hora e usei a função AVG, mas dá erro de ORA-01722: invalid number.
Suponho que como coloquei ':' (dois pontos), ficou como varchar. Tentei ainda converter o campo antes do AVG para to_number, mas não funcionou.
Alguém sabe como resolvo isso?

Selecionar tudo

Select campo_1, 
       AVG(hora) as hora
From (
    Select x.campo_1,
           to_char(to_date(to_char(x.quantidade/60,'FM00')|| ':' ||to_char(abs(mod(x.quantidade,60)),'FM00'), 'hh24:mi:ss'),'hh24:mi') as hora
    From tabela x
) Group by campo_1;
Uso o SQL Developer como Client SQL
O Oracle é o Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit

Re: AVG não funciona para Média em campo Hora

Enviado: Sex, 28 Jan 2022 4:45 pm
por dr_gori
O AVG apenas faz hora de números. No seu exemplo você está tentando fazer média de um varchar.
E mesmo colocando TO_NUMBER, não vai dar certo, exatamente por causa dos dois pontos.

Ou seja, você deve primeiro converter suas horas/minutos em numero. (Por exemplo: 2h30m = 150 minutos).
Depois você faz a média AVG desse campo.
Digamos que sua média deu 65 minutos. Aí você pode converter de volta SE QUISER. (65 minutos = 1h5m).