我已經看過類似於StackOverflow詢問的其他多個問題,但似乎沒有任何東西符合我的賬單。我的查詢稍微複雜一些。基本上,我需要找到條目的等級。根據遊戲結果返回rank的SQL Server查詢
我的表結構是:
的TestEntry
Id, TotalTime, DateCreated
GameResult
GameId, TestEntryId, Duration, Score
QuestionResult
QuestionId, TestEntryId, Correct, UsersAnswer
查詢來計算所有的分數通過以下完成:
CREATE TABLE #GRS
(
TestEntryId uniqueidentifier,
Score int
)
CREATE TABLE #QRS
(
TestEntryId uniqueidentifier,
CorrectAnswers int
)
/* Populate temp tables with Game/Question results */
INSERT INTO #GRS
SELECT
TestEntryId,
SUM(Score) AS Score
FROM GameResult
GROUP BY TestEntryId
INSERT INTO #QRS
SELECT
TestEntryId,
COUNT(*) CorrectAnswers
FROM QuestionResult
WHERE Correct = 1
GROUP BY TestEntryId
SELECT
Id, ISNULL(GRS.Score,0) + (ISNULL(QRS.CorrectAnswers,0) * 25) AS Score
FROM TestEntry TE
LEFT JOIN #GRS GRS ON(GRS.TestEntryId = TE.Id)
LEFT JOIN #QRS QRS ON(QRS.TestEntryId = TE.Id)
WHERE TE.TotalTime > 0
基於特定TestEntry.Id,我需要確定進入的等級。由於臨時表的使用,證明了棘手的問題,事實上TestEntry表中沒有「TotalScore」,它正在被動態計算。
什麼版本的SQL Server? – 2010-10-28 02:17:43
我第二個OMG Ponies的問題,因爲SS08中有一個RANK函數。 – 2010-10-28 02:21:24
@Brian Driscoll:SS2005是第一個支持分析功能的人 - 我同意這一點,這就是我所看到的。 – 2010-10-28 02:23:35