Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Berechnen Sie den Durchschnitt zwischen Spalten, indem Sie zwei Zeilen in SQL Server vergleichen

Ich denke, Sie können einfach min() verwenden und max() der Einfachheit halber, um die Zeiten für die Gebots-/App-Paare zu erhalten. Der Rest ist nur Aggregation und noch mehr Aggregation.

Die von Ihnen beschriebene Verarbeitung scheint zu sein:

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;

Dadurch werden Annahmen getroffen, die mit den bereitgestellten Daten übereinstimmen – dass die Status keine Duplikate für die Gebots-/App-Paare aufweisen und dass die Genehmigung immer nach Überprüfung erfolgt.