sql >> Base de Datos >  >> RDS >> Sqlserver

Calcule el promedio entre columnas comparando dos filas en SQL Server

Creo que puedes usar min() y max() por simplicidad para obtener los tiempos de los pares de oferta/aplicación. El resto es solo agregación y más agregación.

El procesamiento que describe 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;

Esto hace suposiciones que son coherentes con los datos proporcionados:que los estados no tienen duplicados para los pares de oferta/aplicación y que la aprobación siempre se realiza después de la revisión.