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;