Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Calcular a média entre colunas comparando duas linhas no SQL Server


Eu acho que você pode usar min() e max() para simplificar, obter os tempos dos pares lance/aplicativo. O resto é apenas agregação e mais agregação.

O processamento que você descreve parece ser:
select avg(avg_bid_diff)
from (select bid, avg(diff*1.0) as avg_bid_diff
      from (select bid, appid,
                   datediff(second, min(starttime), max(statustime)) as diff
            from t
            where appstatus in ('In Review', 'Approved')
            group by bid, appid
            having count(*) = 2
           ) ba
      group by bid
     ) b;

Isso faz suposições consistentes com os dados fornecidos -- que os status não têm duplicatas para os pares de lance/aplicativo e que a aprovação ocorre sempre após a revisão.