使用提供的表我想示例,让我们说每天有2个用户,这样分配给这两天的用户就不同了。当然,我遇到的问题更为复杂,但这个简单的例子给出了这个想法。
drop table if exists test;
create table test (
user_id int,
day_of_week int);
insert into test values (1, 1);
insert into test values (1, 2);
insert into test values (2, 1);
insert into test values (2, 2);
insert into test values (3, 1);
insert into test values (3, 2);
insert into test values (4, 1);
insert into test values (4, 2);
insert into test values (5, 1);
insert into test values (5, 2);
insert into test values (6, 1);
insert into test values (6, 2);
预期结果如下:
create table results (
user_id int,
day_of_week int);
insert into results values (1, 1);
insert into results values (2, 1);
insert into results values (3, 2);
insert into results values (6, 2);
答案 0 :(得分:1)
您可以使用窗口功能。这是一个例子。 。 。虽然细节取决于您的数据库(随机数的函数因数据库而异):
select t.*
from (select t.*, row_number() over (partition by day_of_week order by random()) as seqnum
from test t
) t
where seqnum <= 2;