sql >> データベース >  >> RDS >> Oracle

Oracleでクエリを繰り返す方法

    DBMS_RANDOM.value()の各呼び出し 別の値を返します 。したがって、保証はありません どんな呼び出しもあなたの境界の間に入るでしょう。実際、統計的にはありそうにありません。その結果、ELSEブランチを定義していないため、ほとんどの場合、NULLが返されます。

    これは、100個のランダムな値を生成する代替ソリューションです。

    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の役割が明確ではないため、無視することにしました。 質問を編集してください これがあなたを不幸にするなら、より多くの詳細を追加するために



    1. SELECTクエリのデフォルトの行順序-SQLServer2008とSQL2012

    2. MySQL-MM / DD/YYをUnixタイムスタンプに変換します

    3. OracleDate-現在までの年数を追加する方法

    4. COPYはどのように機能し、なぜINSERTよりもはるかに高速なのですか?