sql >> Databáze >  >> RDS >> Oracle

Jak opakovat dotaz v Oracle

Každé volání DBMS_RANDOM.value() vrátí jinou hodnotu . V důsledku toho neexistuje žádná záruka že jakýkoli hovor spadne mezi kteroukoli z vašich hranic. Ve skutečnosti je to statisticky nepravděpodobné. V důsledku toho většinu času dostanete vrácenou hodnotu NULL, protože jste nedefinovali žádnou JINOU větev.

Zde je alternativní řešení, které generuje sto náhodných hodnot.

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
;

Vzhledem k tomu, jak váš kód definuje hranice větví, většina random_groups bude 4 .

Z vašeho zveřejněného kódu (hračky?) není jasné, jaká je role TEMP_TRT, takže jsem se rozhodl ji ignorovat. Upravte svůj dotaz přidat další podrobnosti, pokud jste z toho nešťastní



  1. přejmenování zamčené tabulky

  2. jak vytvořit tabulku dědičnosti v oracle

  3. Oracle - rozdělení jednoho řádku na více řádků

  4. Odstraňte klauzuli DEFINER z výpisů MySQL