Oracle
 sql >> Base de données >  >> RDS >> Oracle

SQL :Comment diviseriez-vous 100 000 enregistrements d'une table Oracle en 5 morceaux ?

Si vous souhaitez simplement attribuer des valeurs 1 à 5 à des groupes de taille essentiellement égale, utilisez alors ntile() :

select t.*, ntile(5) over (order by NULL) as num
from (select t.*
      from t
      where rownum <= 100000
     ) t;

Si vous souhaitez insérer dans 5 tableaux différents, utilisez insert all :

insert all
    when num = 1 then into t1
    when num = 2 then into t2
    when num = 3 then into t3
    when num = 4 then into t4
    when num = 5 then into t5
    select t.*, ntile(5) over (order by NULL) as num
    from (select t.*
          from t
          where rownum <= 100000
         ) t;