
Oracle如何把某个月的数据平均分配到不同日子?

如果总记录数是35条,该月有31天,那无论怎么分,也不可能均分,除非记录数正好是62,93等31天的倍数。那么,只能是随机分配,看上去差不多即可。不知道是不是这样的要求。
SQL> select count(*) from dba_objects;
COUNT(*)
----------
99700
将DBA_OBJECTS内容存入test表
SQL> create table test as select object_id from dba_objects;
Table created.
test加字段create_date, 以后要随机分配,就分配到该字段上
SQL> alter table test add create_date date;
Table altered.
比如分配到8月的每一天吧:
SQL> update test set create_date=trunc(to_date('2023-07-31','yyyy-mm-dd'))+round(dbms_random.value(0.5,31.49999999));
99700 rows updated.
SQL> commit;
SQL> select to_char(create_date,'yyyy-mm-dd'),count(*) from test group by to_char(create_date,'yyyy-mm-dd') order by 1;
TO_CHAR(CREATE_DATE,'YYYY-MM-D COUNT(*)
------------------------------ ----------
2023-08-01 3182
2023-08-02 3162
2023-08-03 3228
2023-08-04 3166
2023-08-05 3177
2023-08-06 3312
2023-08-07 3179
2023-08-08 3240
2023-08-09 3233
2023-08-10 3264
2023-08-11 3216
2023-08-12 3157
2023-08-13 3244
2023-08-14 3313
2023-08-15 3194
2023-08-16 3239
2023-08-17 3294
2023-08-18 3164
2023-08-19 3268
2023-08-20 3178
2023-08-21 3166
2023-08-22 3209
2023-08-23 3174
2023-08-24 3228
2023-08-25 3161
2023-08-26 3361
2023-08-27 3225
2023-08-28 3062
2023-08-29 3296
2023-08-30 3201
2023-08-31 3207
31 rows selected.
似乎大概每天的条数差不多。


