我正在制作一个应用程序,它会为MMO的PVP系统提供赢/输比率(我有一个特定的设计,但它并不重要)。这个想法是玩家完成一场比赛并打入一些我将在下面包含的数据。在填充数据库之后,玩家可以打入对手的战队标签,即将到来的地图名称,游戏类型和团队组成,以获得对手的该地图的W / L比率。有一种方法可以确定在他们的几率下可以期待什么。
我已经设计了这些表格,但是我对这样做的功能以及如何集成它感到困惑。如果它只是直接W / L,没什么大不了的。但是,一旦我在地图和其他因素中投入,它就会比我能说的更多。
另外,一个小的最佳实践问题:将Wins / Loss作为W / L输入还是将其设置为布尔值更好,因此T = W且F = L?
那么函数看起来是什么样的呢?表数据如下,从我的表创建中解除:
CREATE TABLE [dbo].[Games] (
[GameID] INT NOT NULL,
[SubmitterClanID] INT NULL,
[OpponentClanID] INT NULL,
[GameOutcome] NVARCHAR (3) NULL,
[SubmitterUnitSize] INT NULL,
[OpposingUnitSize] INT NULL,
[GameMode] VARCHAR (50) NULL,
[MapName] VARCHAR (50) NULL,
[Grids] CHAR (2) NULL,
[1stDeck] VARCHAR (50) NULL,
[2ndDeck] VARCHAR (50) NULL,
[3rdDeck] VARCHAR (50) NULL,
[4thDeck] VARCHAR (50) NULL,
[Narrative] VARCHAR (MAX) NULL,
在这种情况下,甲板是敌人装载。 GameID会在填充时自动创建,ID为+1。因此,该功能至少需要根据家族ID,地图名称和游戏模式显示W / L.理想情况下,它还包括甲板和战略地图网格,但我很满意,没有这些。
提前致谢!
答案 0 :(得分:1)
编辑:Nvm,刚刚意识到你在寻找一个功能,而不仅仅是一个查询。
假设您不希望降低比率,只需将变量插入以下的where子句即可。如果要添加这些,还可以按网格或其他因素进行分组。
Select Count(distinct case when GameOutcome = 'Win' then GameID end)*100.0
/Count(distinct GameID) as PercentWon --OR
, Cast(Count(distinct case when GameOutcome = 'Win' then GameID end) as Varchar)
+ ':' + Cast(Count(distinct case when GameOutcome = 'Loss' then GameID end) as Varchar) as WinLossRatio
from Games
where OpponentClanID = @OppID
and MapName = @Map
and GameMode = @GameType