DBMS_RANDOM.value()
. की प्रत्येक कॉल एक भिन्न मान देता है . नतीजतन कोई गारंटी नहीं . है कि कोई भी कॉल आपकी किसी भी सीमा के बीच में आ जाएगी। वास्तव में यह सांख्यिकीय रूप से असंभव है। नतीजतन अधिकांश समय आपको एक NULL वापस मिल जाएगा, क्योंकि आपने कोई ELSE शाखा परिभाषित नहीं की है।
यहां एक वैकल्पिक समाधान है जो एक सौ यादृच्छिक मान उत्पन्न करता है।
with dr as (
select DBMS_RANDOM.value val
from dual
connect by level <= 100
)
select dr.val
, case when dr.val >= 0 and dr.val<=0.053 then 1
when dr.val > 0.053 and dr.val <= 0.097 then 2
when dr.val > 0.097 and dr.val <= 0.142 then 3
else 4
end random_groups
from dr
;
जिस तरह से आपका कोड शाखाओं की सीमा को परिभाषित करता है, उसे देखते हुए अधिकांश random_groups
4
होगा ।
आपके पोस्ट किए गए (खिलौना?) कोड से यह स्पष्ट नहीं है कि TEMP_TRT की भूमिका क्या है, इसलिए मैंने इसे अनदेखा करने का निर्णय लिया। कृपया अपना प्रश्न संपादित करें अधिक विवरण जोड़ने के लिए यदि यह आपको दुखी करता है