Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Calculer la moyenne entre les colonnes en comparant deux lignes dans SQL Server

Je pense que vous pouvez simplement utiliser min() et max() pour plus de simplicité, obtenir les temps pour les paires enchère/application. Le reste n'est que de l'agrégation et encore de l'agrégation.

Le traitement que vous décrivez semble être :

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;

Cela fait des hypothèses qui sont cohérentes avec les données fournies :que les statuts n'ont pas de doublons pour les paires enchère/application et que l'approbation est toujours après examen.