一个有趣的查找--搜索最大值所在的ID号 (轉自:http://blog.csdn.net/dhlhh)
2004-10-20 14:36
603 查看
朋友出了个题,各有A,B,C三人做游戏,记录第次得分,经几十次游戏后,成绩如下:
ID Name Score
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 Name Score
1 a 88
5 b 77
4 c 90
最初我觉得好象是初级的题,把眼光放在最大值上,但随后就觉得这重点不在最大值上,而是最大值所在的ID号。
题目难点:搜索出最大值所在的 ID 号
例外情况:每个人都可能出现几个最大的值
动脑:开始先想到这MAX函数:
SELECT MAX(Score), [Name] GROUP BY [Name]
但这该死的 ID 号怎么也插入不了
一线希望:用了个子查询:
SELECT [ID],[Name],Score
FROM Table1 a
WHERE Score IN
(SELECT MAX(b.Score) AS MAXScore
FROM Table1 b
GROUP BY b.[Name] )
可是,这 ID 号还是多出来了,原因是由于该搜索是以最大值的集合作依据,如77这个最大值,可能是B的最大值,但是A和C可能也会出现77这个数,但不是最大值,所以......
胜利,最后加了个条件,使最大值集合中的Name值,与搜索的Name值相符合
SELECT [ID],[Name],Score
FROM Table1 a
WHERE Score IN
(SELECT MAX(b.Score) AS MAXScore
FROM Table1 b
GROUP BY b.[Name] HAVING a.[Name]=b.[Name] )
结果顺利出来结果
--------------------------------
或者:
select t.name,t.score,min(t.id) as id
from table1 t inner join
(select name,max(score) as score from table1 group by name) x on t.name=x.name and t.score=x.score
group by t.name,t.score
ID Name Score
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 Name Score
1 a 88
5 b 77
4 c 90
最初我觉得好象是初级的题,把眼光放在最大值上,但随后就觉得这重点不在最大值上,而是最大值所在的ID号。
题目难点:搜索出最大值所在的 ID 号
例外情况:每个人都可能出现几个最大的值
动脑:开始先想到这MAX函数:
SELECT MAX(Score), [Name] GROUP BY [Name]
但这该死的 ID 号怎么也插入不了
一线希望:用了个子查询:
SELECT [ID],[Name],Score
FROM Table1 a
WHERE Score IN
(SELECT MAX(b.Score) AS MAXScore
FROM Table1 b
GROUP BY b.[Name] )
可是,这 ID 号还是多出来了,原因是由于该搜索是以最大值的集合作依据,如77这个最大值,可能是B的最大值,但是A和C可能也会出现77这个数,但不是最大值,所以......
胜利,最后加了个条件,使最大值集合中的Name值,与搜索的Name值相符合
SELECT [ID],[Name],Score
FROM Table1 a
WHERE Score IN
(SELECT MAX(b.Score) AS MAXScore
FROM Table1 b
GROUP BY b.[Name] HAVING a.[Name]=b.[Name] )
结果顺利出来结果
--------------------------------
或者:
select t.name,t.score,min(t.id) as id
from table1 t inner join
(select name,max(score) as score from table1 group by name) x on t.name=x.name and t.score=x.score
group by t.name,t.score
相关文章推荐
- 一个有趣的查找--搜索最大值所在的ID号
- 一个有趣的查找--搜索最大值所在的ID号
- 用键盘控制光标在输入框中跳转的小巧门 (轉自http://blog.csdn.net/dhlhh)
- 转自:http://m.blog.csdn.net/article/details?id=6554168 在使用order by语句进行查询结果排序时,不同的数据库对于被排序字段数据行为null的情况
- 程序只启动一个实例的几种方法(转自http://blog.csdn.net/starlee)
- javascript 遍历一个对象object 有时会用到(转自:http://blog.csdn.net/peng_wu01/article/details/5569247)
- JAVA连接ORACLE的基本步骤,写在这里做备忘 (参考了http://student.csdn.net/space.php?uid=412909&do=blog&id=33102)
- http://m.blog.csdn.net/article/details?id=8237698
- http://m.blog.csdn.net/article/details?id=46348827
- 一个牛人的博客:http://blog.csdn.net/david_lv
- .NET委托:一个C#睡前故事(http://blog.csdn.net/uoyevoli)
- CSharp Tips:应用程序访问集成Windows认证的站点 (Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=11652)
- http://tb.blog.csdn.net/TrackBack.aspx?PostId=1571046
- 一个较完整的带农历的日历[作者Blog:http://blog.csdn.net/AppleBBS/]
- 声明:目前在网上出现一个跟我同名的人,他的blog是http://blog.csdn.net/allyesno
- http://blog.csdn.net/v_july_v/article/details/6256463(hash查找)
- http://m.blog.csdn.net/article/details?id=2630620
- 手把手教你把Vim改装成一个IDE编程环境(图文)http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx
- 快速掌握一个语言最常用的50% 【转自孟岩http://blog.csdn.net/myan】
- 很郁闷,原先的博客(http://blog.csdn.net/hhrxp)进不去了,重新注册了一个