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

Oracle से नमूना, परिणामों की सटीक संख्या की आवश्यकता है (नमूना खंड)

ज़ोनियरल्स की उदाहरण तालिका को उधार लेते हुए, मुझे बिल्कुल वही चीज़ दिखाई देती है (एक OEL डेवलपर छवि पर 11gR2 में), आमतौर पर a के लिए मान प्राप्त करना 1 . की ओर भारी झुकाव; छोटे नमूने के आकार के साथ मैं कभी-कभी कोई भी नहीं देख सकता। अतिरिक्त रैंडमाइजेशन/प्रतिबंध कदम के साथ मैंने एक टिप्पणी में उल्लेख किया है:

select a, count(*) from (
    select * from test1 sample (1)
    order by dbms_random.value
)
where rownum < 101
group by a;

... तीन रन के साथ मुझे मिला:

         A   COUNT(*)
---------- ----------
         1         71
         2         29

         A   COUNT(*)
---------- ----------
         1        100

         A   COUNT(*)
---------- ----------
         1         64
         2         36

हां, 100% वास्तव में 1 . के रूप में वापस आया दूसरे रन पर। तिरछा अपने आप में यादृच्छिक प्रतीत होता है। मैंने block . के साथ प्रयास किया संशोधक जो थोड़ा फर्क पड़ता था, शायद आश्चर्यजनक रूप से - मैंने सोचा होगा कि इस स्थिति में यह और भी खराब हो जाएगा।

यह निश्चित रूप से छोटे नमूना आकारों के लिए धीमा होने की संभावना है, क्योंकि इसे पूरी तालिका को हिट करना है; लेकिन यह मुझे काफी समान रूप से समान रूप से विभाजित करता है:

select a, count(*) from (
    select a, b from (
        select a, b, row_number() over (order by dbms_random.value) as rn
        from test1
    )
    where rn < 101
)
group by a;

मैंने तीन रन बनाए:

         A   COUNT(*)
---------- ----------
         1         48
         2         52

         A   COUNT(*)
---------- ----------
         1         57
         2         43

         A   COUNT(*)
---------- ----------
         1         49
         2         51

... जो थोड़ा स्वस्थ दिखता है। निश्चित रूप से वाईएमएमवी।

यह Oracle लेख कुछ नमूनाकरण तकनीकों को शामिल करता है, और आप ora_hash . का मूल्यांकन करना चाह सकते हैं दृष्टिकोण भी, और स्तरीकृत संस्करण यदि आपका डेटा फैलता है और 'प्रतिनिधित्व' के लिए आपकी आवश्यकताएं इसकी मांग करती हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या MAX_UTILIZATION PROCESSES के कारण प्रबंधित कनेक्शन अपवाद प्राप्त करने में असमर्थ हो सकता है?

  2. NLS_CHARSET_DECL_LEN () Oracle में फ़ंक्शन

  3. चयन में अनुक्रम संख्या उत्पन्न करें

  4. सीएलओबी और एनसीएलओबी में क्या अंतर है?

  5. Oracle:किसी समूह का अधिकतम मूल्य प्राप्त करना?