停留在查询上的类型。我有一张测验结果表,其中包含:SQL查找每组最高记录
ID of the player,
QuizID,
Number of seconds it took to complete the quiz,
Number of correct answers
我如何找到每个测验的胜者。 =玩家的最大正确答案数量和每个QuizID的最短秒数
我已经尝试了很多方法,但我无法获得正确的结果。希望有人能帮忙。
谢谢!
停留在查询上的类型。我有一张测验结果表,其中包含:SQL查找每组最高记录
ID of the player,
QuizID,
Number of seconds it took to complete the quiz,
Number of correct answers
我如何找到每个测验的胜者。 =玩家的最大正确答案数量和每个QuizID的最短秒数
我已经尝试了很多方法,但我无法获得正确的结果。希望有人能帮忙。
谢谢!
CTE将计算发生在测验每个玩家。主要查询仅筛选第一个职位。
; with quiz as (
select QuizId, PlayerID, row_number() over (partition by QuizId order by count_answers desc, seconds) rownum
from QuizResults
)
select *
from QuizResults
inner join Quiz
on QuizResults.QuizID = Quiz.QuizID
and QuizResults.PlayerID = Quiz.PlayerID
where rownum = 1
未验证:
select ID
from your_table
group by QuizId
having max(count_answers) and min(seconds)
这只会显示最高纪录,而不是最高的每组。 – 2012-03-08 09:07:21
如果有两名玩家的正确答案数和同一时间数相同,您希望发生什么? – 2012-03-08 09:00:07
如果一个玩家拥有最多正确答案而另一个玩家拥有最少秒数? – 2012-03-08 09:02:44
AT:Mark如果有两个玩家的正确答案和时间相同,那么它将是第一个进入的玩家,所以最低的玩家ID将在这里进行。 AT:ypercube我想让球员用最少的时间回答最正确的球员 – gen 2012-03-08 09:31:00