gpt4 book ai didi

sql查询选择一个随机值(加权)

转载 作者:行者123 更新时间:2023-12-03 02:48:42 28 4
gpt4 key购买 nike

我有一个包含三个字段的表:ID、值、计数

ID和Value构成PK。

给定一个 ID,我想选择一个按计数加权的值,然后将计数减一。

如果我有

1  A  2
1 B 3

我应该有 2/5 的机会获得 A,有 3/5 的机会获得 B。如果选择 A,则表格应如下所示

1  A  1
1 B 3

下次 A 将有 1/4 的机会被选中,B 将有 3/4

想法?

谢谢!

更新:

重量就像放入袋子中的相同值(value)的筹码数量。然后随机选择一个。

最佳答案

CREATE TABLE #Vals
(
ID INT,
Value CHAR(1),
[Count] INT,
PRIMARY KEY(ID,Value)
)

INSERT INTO #Vals
SELECT 1,'A',2 UNION ALL
SELECT 1,'B',3

;WITH Nums AS
(
SELECT number
FROM master..spt_values
WHERE number>0 AND type='P'
), Row AS
(
SELECT TOP 1 v.*
FROM #Vals v
JOIN Nums n ON n.number <= v.[Count]
WHERE v.ID=1
ORDER BY CHECKSUM(NEWID())
)
UPDATE Row
SET [Count] = [Count] -1
OUTPUT inserted.*


DROP TABLE #Vals

关于sql查询选择一个随机值(加权),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5811018/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com