Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在参赛者之间动态分配奖品_C#_Sql_Sql Server - Fatal编程技术网

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.位置 虽然SQL有点难以理解。我不确定程序方法会简单得多。此外,SQL还有一个很好的特性,即可以很容易地同时扩展到所有游戏:


您想要的结果有一个名为UserId的东西,这在示例数据中没有提到。您应该澄清您的问题并添加您正在使用的示例代码。