为每个值组合返回不同的结果

  • 本文关键字:结果 返回 组合 sql
  • 更新时间 :
  • 英文 :


我试图为每年和使用的代码组合返回一个随机ID。数据库相当大,所以我试图获得一个随机样本进行测试,并需要确保每年和代码都有代表性。

一个公平的例子是假设每个组合都有100多个ID,但年份和代码是有限的。我希望得到一个看起来像下面的结果

ID
YEAR 代码
2015 CODE_A -今年的随机ID/代码组合
2015 CODE_B -今年的随机ID/代码组合
2015 CODE_C -今年的随机ID/代码组合
2015 CODE_D -今年的随机ID/代码组合
2015 CODE_E -今年的随机ID/代码组合
2016 CODE_A -今年的随机ID/代码组合
2016 CODE_B -今年的随机ID/代码组合
2016 CODE_C -今年的随机ID/代码组合
2016 CODE_D -今年的随机ID/代码组合
2016 CODE_E -今年的随机ID/代码组合

您可以使用row_number():

select t1.*
from (select t1.*,
row_number() over (partition by year, code order by dbms_random.value) as seqnum
from table1 t1
) t1
where seqnum = 1;

如果每个组合需要一行以上,只需使用seqnum <= <n>即可。

最新更新