Sql ?谢谢你的回答@Gordon!请告诉我第二种方法是什么意思,意思是我应该输入行数()*17-mod(39101)作为seqnum吗?我尝试了两种答案,它们都很好,谢谢@Cetin!我尝试了两种答案,结果都很好,谢谢@Cetin的帮助! drop table

Sql ?谢谢你的回答@Gordon!请告诉我第二种方法是什么意思,意思是我应该输入行数()*17-mod(39101)作为seqnum吗?我尝试了两种答案,它们都很好,谢谢@Cetin!我尝试了两种答案,结果都很好,谢谢@Cetin的帮助! drop table,sql,random,vertica,Sql,Random,Vertica,?谢谢你的回答@Gordon!请告诉我第二种方法是什么意思,意思是我应该输入行数()*17-mod(39101)作为seqnum吗?我尝试了两种答案,它们都很好,谢谢@Cetin!我尝试了两种答案,结果都很好,谢谢@Cetin的帮助! drop table if exists test; create table test ( user_id int, g int); insert into test values (1, 1); insert into test values (2, 1


?谢谢你的回答@Gordon!请告诉我第二种方法是什么意思,意思是我应该输入
行数()*17-mod(39101)
作为seqnum吗?我尝试了两种答案,它们都很好,谢谢@Cetin!我尝试了两种答案,结果都很好,谢谢@Cetin的帮助!
drop table if exists test; 

create table test (
user_id int,
g int);

insert into test values (1, 1);
insert into test values (2, 1);
insert into test values (3, 1);
insert into test values (4, 1);
insert into test values (5, 1);
insert into test values (6, 1);

with temp as (
select t.user_id
from (select tt.*, row_number() over (partition by tt.g order by randomint(100)) as seqnum
      from test tt) t 
where t.seqnum <= 2
)
select user_id from temp union all 
select user_id from test where user_id not in (select user_id from temp)
with temp as (
      select t.*
      from (select t.user_id
                   row_number() over (partition by tt.g order by  mod(71 * seqnum - 31, 101), user_id) as psuedo
            from (select tt.*,
                         row_number() over (partition by tt.g order by user_id) as seqnum
                  from test tt
                 ) t 
           ) t
      where t.pseudo <= 2
     )
CREATE TABLE #test (user_id INT, g INT);

INSERT INTO #test VALUES(1, 1);
INSERT INTO #test VALUES(2, 1);
INSERT INTO #test VALUES(3, 1);
INSERT INTO #test VALUES(4, 1);
INSERT INTO #test VALUES(5, 1);
INSERT INTO #test VALUES(6, 1);

SELECT TOP(2) * INTO #temp FROM #test ORDER BY NEWID();

SELECT user_id FROM #temp
UNION ALL
SELECT user_id FROM #test WHERE user_id NOT IN(SELECT user_id FROM #temp);

DROP TABLE #test;
DROP TABLE #temp;