use*_*736 3 random postgresql select grouping sequence
我需要将UPDATEPostgreSQL表中的命令行(从subselect中选择)分成组,这些组将在其中一列中用整数值标识.这些组的大小应相同.源表包含数十亿条记录.
例如,我需要将213个选定的行分成组,每组应包含50个记录.结果将是:
使用一些循环(或使用PostgreSQL窗口函数)没有问题,但我需要非常有效和快速地完成它.我不能在id中使用序列,因为这些ID中应该存在间隙.
我有一个想法是使用随机整数生成器并将其设置为行的默认值.但是当我需要调整组大小时,这是不可用的.
下面的查询应显示213行,组号从0到4.如果你想1-5,只需加1
SELECT i, (row_number() OVER () - 1) / 50 AS grp
FROM generate_series(1001,1213) i
ORDER BY i;
Run Code Online (Sandbox Code Playgroud)