我需要从具有用户和帖子的表中创建一个随机样本。每个用户可以发表多个帖子。
我只需要从可变大小的用户中选择200个(每天我们的总数会有不同)。
我创建了一个rand()变量,并仅选择具有该rand()的项

200/count(*)


但是问题是,我可能会让用户重复。
考虑到用户的原始分布,我如何才能从此变量总数中仅选择200个用户(一个用户的出现次数更多,因此我需要给他们更多选择机会)?

我正在考虑创建一个循环,该循环填充一个统计用户的字段...。因此,我将为每个用户使用相同的数字(现在我没有用户ID,而是有一个char字段)。但是我不确定如何做到这一点。

谢谢!

最佳答案

您是说您在一张桌子中有用户和他们的帖子?
您的架构是什么样的?

您可能正在尝试类似的操作,尽管没有实际的模式很难猜测:

SELECT name, count( post ) as "number of posts"
FROM user_and_posts
GROUP BY name
HAVING count( post ) >= 100  -- (or whatever your limit is)
ORDER BY rand( )
LIMIT 0, 199

10-07 19:23
查看更多