我正在尝试从表中选择一个随机行,但是此表中有一个名为var cashLots = data.lots.filter(lot => lot.cash);
的列,我希望它返回具有更高速率的行,并且很少返回行这个可能性较低吗?
表:
Rate
答案 0 :(得分:3)
所以你想要一个随机行,但是对那些利率较高的行加权?
知道表中有多少行也是一件好事 - 整个批次排序有点贵。您可能更喜欢使用row_number概念,而不是使用N guids进行排序。
所以......一个选项可能是生成一个数字,然后用它除以100。想象一下,我们生成一个介于0和1之间的数字。
.25给我们400,.5给我们200,。75给我们133 ...注意这里有一条曲线 - 所以接近100的数字更频繁出现(减去100以使范围从1开始) )。
您可以将RAND()
用于0到1之间的单个值(这可能已经足够了),然后进行除法和减法以获得数字。如果这高于记录数,那么可能重复一次?但是,请尝试为适合您的部门选择一个值。
如果你需要更多的重量,你可以将你的RAND()值提高一些数量,以使其变平或使其变得陡峭。做一些实验,看看它看起来如何。
答案 1 :(得分:0)
此查询将获取具有高于平均费率的随机记录
SELECT TOP (1) * FROM _Random
WHERE Rate>(SELECT AVG(Rate) FROM _Random)
ORDER BY NEWID()