min()
を使用できると思います およびmax()
簡単にするために、入札/アプリのペアの時間を取得します。残りは単なる集約とさらなる集約です。
あなたが説明した処理は次のようです:
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;
これにより、提供されたデータと一致する仮定が立てられます。つまり、ステータスに入札/アプリのペアの重複がなく、承認は常にレビュー後に行われるということです。