【发布时间】:2018-07-11 01:22:52
【问题描述】:
我有一个名为“allscores”的大型 SQL 表,类似于以下内容:
user score quiz_id high_score
Bob 90 math 1
John 80 math 0
John 85 math 1
Steve 100 math 1
Bob 95 reading 0
Bob 100 reading 1
John 80 reading 1
“high_score”字段位于表中的开头,并且对于用户在该测验中得分最高的行始终设置为“1”。
我想要的是一个 SQL 查询,我可以对单个用户运行该查询,以从两个测验(“数学”和“阅读”)中的每一个中提取他们的最高分数,以及他们在该测验分数中的总体排名。到目前为止,我有以下内容:
SELECT `user`, `score`, `quiz_id` FROM `allscores` WHERE `user`="Bob" AND `high_score`="1"
这将输出以下内容:
user score quiz_id
Bob 90 math
Bob 100 reading
这个查询只是从每个测验中提取 Bob 的最高分数 - 我要添加的是该特定测验中分数之间的分数排名 - 所以输出如下:
user score quiz_id rank
Bob 90 math 2
Bob 100 reading 1
Bob 的数学测验排名为“2”,因为 Steve 的分数较高,但他的阅读排名为“1”,因为他的分数最高。
如何将此排名列添加到我现有的查询中?
【问题讨论】:
-
什么版本和类型的 SQL?
-
而在排名时,你如何处理平局?
标签: sql phpmyadmin