CALCULAR MEDIA DE TEMPO POR SQL

MAICONCARDOSO 27/12/2004 14:43:32
#57167
Ola galera!!

Como faço pra realizar um calculo do tempo medio das entregas atraves de clausula SQL?

Dado que possuo a hora do pedido e a hora da entrega do produto.
Tenho o seguinte código, funcionou mas achei muito pesado:

   
.Source = "SELECT Pedidos.DataDoPedido, Pedidos.HoraPedido, Pedidos.HoraEntregue, Pedidos.Status " & _
"FROM Pedidos " & _
"WHERE Pedidos.Status='E' AND Pedidos.DataDoPedido=#" & Format(Date, "MM/DD/YYYY") & "#;"

Set .ActiveConnection = SBC
.Open

Y = 0
Dim Tempo As Variant
Do Until .EOF
If !HoraPedido <> "" And !HoraEntregue <> "" Then
Y = Y + 1
Tempo = CDate(Tempo) + CDate(Format(!HoraPedido - !HoraEntregue, "HH:MM"))
End If
.MoveNext
Loop

MediaEntregas = Format(CDate(Tempo) / Y, "HH:MM")

USUARIO.EXCLUIDOS 27/12/2004 16:16:25
#57191
Resposta escolhida
Você esta consumindo tempo desnecessário trafegando dados do servidor até o cliente para um cálculo simples. O uso do tipo variant e sucessivas conversões (Format, Cdate) compromentem a performance.

Faça um teste trocando o seu .source pelo código abaixo que trará apenas uma linha já com o tempo médio calculado.
.Source = "SELECT Format(Avg([HoraFim]-[HoraInicio]),"Short Time") AS TempoMedio" & _
"FROM Pedidos " & _
"WHERE Pedidos.Status='E' AND Pedidos.DataDoPedido=#" & Format(Date, "MM/DD/YYYY") & "#;"

Tópico encerrado , respostas não são mais permitidas