मुझे लगता है कि आप केवल 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;
यह अनुमान लगाता है कि प्रदान किए गए डेटा के अनुरूप हैं -- कि स्थितियों में बोली/ऐप जोड़े के लिए डुप्लीकेट नहीं हैं और अनुमोदन हमेशा समीक्षा के बाद होता है।