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

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
oracle_student
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Sáb, 20 Fev 2021 4:29 pm
Localização: Votorantim

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
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

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).
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Majestic-12 [Bot] e 32 visitantes