Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle SQL विसंगति:COUNT(*) बनाम वास्तविक परिणाम सेट

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 . में स्थिति क्लॉज को कई प्रयासों की अनुमति देने के लिए संशोधित किया गया है (जैसा कि टिप्पणियों में उल्लेख किया गया है) और अब केवल प्रयासों बनाम सफलताओं और विफलताओं की संख्या में संतुलन की तलाश है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑरैकल में टेबल, व्यू और समानार्थक शब्द के लिए सभी इंडेक्स और उनके कॉलम कैसे खोजें?

  2. Oracle में R cbind () फ़ंक्शन के समतुल्य?

  3. डंपिंग डेटा ब्लॉक

  4. Oracle के PERCENTILE_CONT फ़ंक्शन के बराबर PostgreSQL

  5. विंडोज़ में फ़ाइल में ऑरैकल एसक्यूएल परिणाम कैसे आउटपुट करें?