Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Calcola la media tra le colonne confrontando due righe in SQL Server

Penso che tu possa semplicemente usare min() e max() per semplicità per ottenere i tempi per le coppie offerta/app. Il resto è solo aggregazione e ancora aggregazione.

L'elaborazione che descrivi sembra essere:

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;

Ciò presuppone che siano coerenti con i dati forniti:che gli stati non abbiano duplicati per le coppie offerta/app e che l'approvazione sia sempre dopo la revisione.