Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách lặp lại một truy vấn trong Oracle

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle CASE ngắn mạch không hoạt động theo nhóm bởi

  2. ORA-20001 trong R12 Thu thập thống kê giản đồ về 11g (FND_HISTOGRAM_COLS)

  3. Gọi thủ tục lưu trữ Oracle từ C #?

  4. SQL tạo bảng phụ thuộc

  5. Tên giao diện mạng có thể có độ dài bao nhiêu?