【发布时间】:2023-03-30 19:55:02
【问题描述】:
我有 SQL 表,其中有 column 和 Probability 。我想从中随机选择一行,但我想给更多的机会来获得更多的概率。我可以做到这一点
Order By abs(checksum(newid()))
但是概率之间的差异太大了,所以它给最高概率提供了更多的机会。就像在选择 74 次该值之后,它再次选择另一个值大约 74 次。我想减少这个。就像我想要 3 -4 倍于它,比其他和所有。我正在考虑将 Range 赋予 Probabilies.Its Like
Row[i] = Row[i-1]+Row[i]
我该怎么做。我需要创建函数吗?有没有其他方法可以实现这一点。我是 neewby。任何帮助都会得到帮助。谢谢
编辑: 我有我的问题的解决方案。我有一个问题 。 如果我有如下表格。
Column1 Column2
1 50
2 30
3 20
我可以得到吗?
Column1 Column2 Column3
1 50 50
2 30 80
3 20 100
每次我想用现有的增加价值。有什么办法吗?
更新: 3小时后终于得到了解决方案,我只是取我的概率的平方根,这样我就可以缩小它们的差异。就像我添加列一样
sqrt(sqrt(sqrt(Probability)))....:-)
【问题讨论】:
-
澄清一下,您希望 column3 是所有其他(以前的)条目和第 2 列中的(当前)值的总和?这不是一个坏主意。但是您想知道如何生成它?有几种方法,但我不确定哪种方法最好。我最大的问题是插入所有值后表格是否是静态的。
-
啊,我看到DNNX的回答也是一样的。
标签: sql select random-sample weighted