Tôi nghĩ bạn chỉ có thể sử dụng min()
và max()
để đơn giản hóa thời gian cho các cặp giá thầu / ứng dụng. Phần còn lại chỉ là tổng hợp và tổng hợp thêm.
Quá trình xử lý bạn mô tả dường như là:
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;
Điều này tạo ra các giả định phù hợp với dữ liệu được cung cấp - rằng các trạng thái không trùng lặp đối với các cặp giá thầu / ứng dụng và việc phê duyệt luôn được thực hiện sau khi xem xét.