我最近开发了一个游戏,数据库运行在 MSSQL 上。
这是我的数据库结构
表:播放器
PlayerID uniqueIdentifier (PK)
PlayerName nvarchar
Run Code Online (Sandbox Code Playgroud)
表:游戏结果
ID bigint (PK - Auto Increment)
PlayerID uniqueIdentifier (FK)
DateCreated Datetime
Score int
TimeTaken bigint
PuzzleID int
Run Code Online (Sandbox Code Playgroud)
我做了一个 SQL 列出了按最高分 (DESC) 和耗时 (ASC) 排序的前 50 名玩家,下面的 Sql 允许我获得每个谜题 ID 的结果。我不确定它是否是 100%,但我相信它是正确的。
;with ResultSet (PlayerID, maxScore, minTime, playedDate)
AS
(
SELECT TOP 50 PlayerID, MAX(score) as maxScore, MIN(timetaken) as minTime, MIN(datecreated) as playedDate
FROM gameresult
WHERE puzzleID = @PuzzleID
GROUP BY PlayerID
ORDER BY maxScore desc, minTime asc, playedDate asc …
Run Code Online (Sandbox Code Playgroud) sql-server ×1