sql选择n个随机组并返回所有记录

1cklez4t  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(376)

我似乎无法找到一个解决这个确切问题的方法,如果不将两个或更多的查询通过操作链接在一起(我以前在postgresql中尝试过一次随机抽样 cur.execute("select distinct group from data where random() < {0}".format(rand_coef)) ,但我无法将结果数组组合到单个查询中,也无法指定确切的n值。)
假设的数据集和查询如下:
假设我想从下面的数据中得到n=3个随机组。

id, group, value
1,a,23
1,a,3
1,b,2
1,a,432
1,b,123
1,d,23
1,d,11
1,c,23
1,c,234
1,a,223
1,c,32

查询的一个示例结果是n=3个随机组(即b、c、d):

id, group, value
1,b,2
1,b,123
1,d,23
1,d,11
1,c,23
1,c,234
1,c,32

这是怎么回事?

b4lqfgs4

b4lqfgs41#

一种方法是:

select t.*
from t join
     (select group
      from t
      group by group
      order by random()
      limit 3
     ) g
    on t.group = g.group;

请注意 group 对于列来说是一个非常糟糕的名称,因为它是一个sql关键字。

相关问题