sql >> Database teknologi >  >> RDS >> Oracle

Sådan gentager du en forespørgsel i Oracle

Hvert kald af DBMS_RANDOM.value() returnerer en anden værdi . Derfor er der ingen garanti at ethvert opkald vil falde mellem nogen af ​​dine grænser. Faktisk er det statistisk usandsynligt. Derfor vil du for det meste få en NULL returneret, fordi du ikke har defineret nogen ELSE-gren.

Her er en alternativ løsning, som genererer hundrede tilfældige værdier.

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
;

I betragtning af den måde din kode definerer grænserne for grenene på, er de fleste random_groups vil være 4 .

Det fremgår ikke klart af din postede (legetøj?) kode, hvad TEMP_TRT's rolle er, så jeg besluttede at ignorere det. Venligst rediger dit spørgsmål for at tilføje flere detaljer, hvis dette gør dig utilfreds



  1. Hent den seneste tidsstempelrække fra tabellen ved hjælp af INNER JOIN

  2. Brug af Jenkins med Kubernetes AWS, del 2

  3. PHP og MySQL - hvordan undgår man adgangskode i kildekoden?

  4. MYSQL - Hvordan forbinder man to forespørgsler for at udelade elementer fundet i den anden forespørgsel (eller måske en bedre løsning?)