C# 在参赛者之间动态分配奖品
这真是让我大吃一惊。我创建了一个联盟,在该联盟中,我根据联盟中参赛者的数量确定了最低和最高位置,即:C# 在参赛者之间动态分配奖品,c#,sql,sql-server,C#,Sql,Sql Server,这真是让我大吃一惊。我创建了一个联盟,在该联盟中,我根据联盟中参赛者的数量确定了最低和最高位置,即: LeagueSizeID LeagueSizeMin LeagueSizeMax 1 1 24 2 25 49 3 500 999 这与定义每个联盟的支出的表有关,这是leaguesiz
LeagueSizeID LeagueSizeMin LeagueSizeMax
1 1 24
2 25 49
3 500 999
这与定义每个联盟的支出的表有关,这是leaguesizeid 3的示例
LeaguesizeID PositionMin PositionMax WinPerc
3 1 1 22.00
3 2 2 10.00
3 3 3 7.00
3 4 4 6.00
3 5 5 5.00
3 6 6 4.00
3 7 7 3.50
3 8 8 3.00
3 9 9 2.50
3 10 10 2.00
3 11 20 1.00
3 21 30 0.50
我采取的方法是循环每个位置,并获得与该位置匹配的参赛者。我面临的问题是,可能会有共同的赢家。如果有联合获奖者,则需要说明第二名的原因。因此,对于以下结果:
UserID Position Prize
1 1 22.0%
2 2 10
3 3 6.5 // joint here so takes position 3 and 4
4 3 6.5 // and splits prize
5 4 5 % // this is now position 5
我正在使用DenseRank is SQL对位置进行排序,但可能我需要将其更改为Rank,除非有人能为我指出一个正确的算法方向,以便从数据库对象驱动执行此操作
提前谢谢 我希望创建两个中间结果集。首先是秩u界。这有用户ID、等级和该等级的联系数。第二个是支出。每个付款位置都有一行,而不是上卷到最小和最大位置。一旦你有了这个,你就可以相当容易地得到支付百分比 我使用常用的表表达式将其组合在一起,并简化并填充了一些缺少的表细节: 排名为 选择 用户ID, 按分数顺序排列 从…起 用户游戏分数 哪里 配子ID=1 ,列为 选择 用户ID, rk位置, 按rk划分的count1作为TieCount 从…起 等级 ,n as 选择 按编号rn排序的行号 从…起 -如果你有很多付款线,你可能需要更多的数字 主..标准贯入度值 ,将支出分解为 选择 n、 作为职位, p、 温珀 从…起 支出p 内连接 N 在p.PositionMin=n.rn上 选择 用户ID, avgwinperc 从…起 支出xp 内连接 秩_界rb 在xp.Position>=rb.Position和 xp.位置
您想要的结果有一个名为UserId的东西,这在示例数据中没有提到。您应该澄清您的问题并添加您正在使用的示例代码。