在SQL中没有替换的每组示例观察

时间:2018-02-07 12:32:16

标签: sql vertica sampling

使用提供的表我想示例,让我们说每天有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);

1 个答案:

答案 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;