您的位置:首页 > 其它

一个有趣的查找--搜索最大值所在的ID号

2008-04-26 22:27 351 查看
朋友出了个题,各有A,B,C三人做游戏,记录第次得分,经几十次游戏后,成绩如下:

ID NameScore
1 a 88
2 b 76
3 c 66

4 c 90
5 b 77
6 a 56

7 b 77
8 c 67
9 a 44

......

当然还有很多

要求搜索A,B,C三人各最好成绩,并且要列出最好成绩的序号即ID
如:
ID NameScore
1 a 88
5 b 77
4 c 90

最初我觉得好象是初级的题,把眼光放在最大值上,但随后就觉得这重点不在最大值上,而是最大值所在的ID号。
题目难点:搜索出最大值所在的ID
例外情况:每个人都可能出现几个最大的值

动脑:开始先想到这MAX函数:
SELECTMAX(Score),[Name]GROUPBY[Name]
但这该死的ID号怎么也插入不了

一线希望:用了个子查询:
SELECT[ID],[Name],Score
FROMTable1a
WHEREScoreIN
(SELECTMAX(b.Score)ASMAXScore
FROMTable1b
GROUPBYb.[Name])
可是,这ID号还是多出来了,原因是由于该搜索是以最大值的集合作依据,如77这个最大值,可能是B的最大值,但是A和C可能也会出现77这个数,但不是最大值,所以......

胜利,最后加了个条件,使最大值集合中的Name值,与搜索的Name值相符合
SELECT[ID],[Name],Score
FROMTable1a
WHEREScoreIN
(SELECTMAX(b.Score)ASMAXScore
FROMTable1b
GROUPBYb.[Name]HAVINGa.[Name]=b.[Name])

结果顺利出来结果
往往是不起眼的问题,很费脑
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐