Mỗi lệnh gọi DBMS_RANDOM.value()
trả về một giá trị khác . Do đó, không có gì đảm bảo rằng mọi cuộc gọi sẽ nằm giữa bất kỳ giới hạn nào của bạn. Trong thực tế, nó không chắc về mặt thống kê. Do đó, hầu hết thời gian bạn sẽ nhận được trả về NULL, bởi vì bạn đã xác định không có nhánh ELSE.
Đây là một giải pháp thay thế tạo ra một trăm giá trị ngẫu nhiên.
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
;
Với cách mã của bạn xác định giới hạn của các nhánh, hầu hết các random_groups
sẽ là 4
.
Không rõ từ mã (đồ chơi?) Đã đăng của bạn vai trò của TEMP_TRT là gì, vì vậy tôi quyết định bỏ qua nó. Vui lòng chỉnh sửa câu hỏi của bạn để thêm chi tiết nếu điều này khiến bạn không hài lòng