CALCULAR MEDIA DE TEMPO POR SQL
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:
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")
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") & "#;"
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