SELECT
a.e_id,
coalesce(attempts, 0) attempts,
coalesce(successes, 0) successes,
coalesce(failures, 0) failures
FROM
(
SELECT e_id, count(*) as attempts FROM e_table
WHERE e_comment LIKE '%attempt%' AND e_date BETWEEN '23-MAY-2016' AND '26-MAY-2016'
GROUP BY e_id
) a
full outer join
(
SELECT e_id, count(*) as successes FROM e_table
WHERE e_comment LIKE '%success%' AND e_date BETWEEN '23-MAY-2016' AND '26-MAY-2016'
GROUP BY e_id
) s
on s.e_id = a.e_id
full outer join
(
SELECT e_id, count(*) as failures FROM e_table
WHERE e_comment LIKE '%failure%' AND e_date BETWEEN '23-MAY-2016' AND '26-MAY-2016'
GROUP BY e_id
) f
on f.e_id = coalesce(a.e_id, s.e_id)
WHERE
coalesce(attempts, 0) <> coalesce(successes, 0) + coalesce(failures, 0)
मैं पूर्ण बाहरी जुड़ाव में बदल गया ताकि आप यह सत्यापित कर सकें कि बिना किसी मिलान प्रयास के कोई सफलता और/या विफलता नहीं है। इससे आपको e_id
खोजने में मदद मिलेगी s जहां लॉगिंग में कुछ गलत हो रहा है। केवल आईडी मानों की सूची ही नहीं, बल्कि महीन संख्याओं से निपटना आसान होना चाहिए।
अन्य लोगों ने एक ही आईडी पर कई प्रयासों की संभावना की ओर इशारा किया है, लेकिन क्या यह कल्पना की जा सकती है कि सफलता और विफलता दोनों को उसी तरह दर्ज किया जा सकता है जैसे किसी तरह के पुनर्प्रयास परिदृश्य में कहा जाता है? हम नहीं जानते कि पूरी टिप्पणियाँ कैसी दिखती हैं। संभावित स्पष्टीकरण के रूप में, क्या एक टिप्पणी में "प्रयास", "सफलता", "विफलता" शब्दों में से एक से अधिक शब्द हो सकते हैं?
यहां पर विचार करने के लिए कुछ और है: क्या आप सुनिश्चित हैं कि आपकी सफलता और असफलता की सभी घटनाएं एक ही दिनांक विंडो में होंगी? दूसरे शब्दों में, क्या प्रयास के बाद कुछ विलंब हुआ है? यदि यह आधी रात के आसपास होता है तो शायद यह बहुत लंबा न हो। हो सकता है कि आप इसकी भरपाई के लिए सफलता और विफलता की सीमा को चौड़ा करना चाहें (और बाएं बाहरी जोड़ में बदलें।)
नोट: where
. में स्थिति क्लॉज को कई प्रयासों की अनुमति देने के लिए संशोधित किया गया है (जैसा कि टिप्पणियों में उल्लेख किया गया है) और अब केवल प्रयासों बनाम सफलताओं और विफलताओं की संख्या में संतुलन की तलाश है।