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

最大值

朋友出了个题,各有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] )

结果顺利出来结果
往往是不起眼的问题,很费脑

时间: 2024-11-03 18:55:33

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

txt文件-用Python处理一个数据存储跟搜索的问题

问题描述 用Python处理一个数据存储跟搜索的问题 要存一系列IP地址,比如192.168/16(指192.168固定的头,前16bit固定),192.168.1/24,192.168.2/24等等,如何存,搜索的时候最方便最快.如果搜索的话,可以搜192.168/16(搜索所有192.168为头的IP地址),可以搜192.168.1/24.192.168.2/24.192.168.3/24或192/8.我能想到的就是用hash了,最慢的办法就是存成数组一个一个找.不使用数据库,每次存成txt

关于水晶报表的一个有趣的问题

问题描述 rptBeforehandChargeInfoListrpt=newrptBeforehandChargeInfoList();错误找不到类型或命名空间名称"rptBeforehandChargeInfoList"(是否缺少using指令或程序集引用?请问该using什么才可以.找不到啊. 解决方案 解决方案二:用对象查看器在dll里搜索一下吧,楼主能保证rptBeforehandChargeInfoList是个类名?!解决方案三:呵呵!!你这不就给一个谜语??让我们大家猜?

Beagle一个强大的桌面搜索工具

Beagle 是一个强大的http://www.aliyun.com/zixun/aggregation/36559.html">桌面搜索工具,您可以用 Beagle 来搜索您的文档.电子邮件.相片等各种文件.它比 Ubuntu 缺省的搜索工具(位置 -> 搜索)(16882.html">Places -> Search for files...) 更快,可以搜索更多的文件类型和信息(比如,您的日程表). (安装 Beagle) Ubuntu 系统缺省并不安装

win8系统电脑如何设置一个有趣的QQ标签

  win8系统电脑如何设置一个有趣的QQ标签          具体步骤: 1.打开QQ,点击自己的头像; 2.在QQ资料中点击"标签"选卡; 3.在下面输入想要设置的标签名点击"贴上"即可; 4.同时在标签选卡页中,我们把鼠标移动到不喜欢的标签上,点击"X"就可以删除了.

win8.1系统如何创建一个简便的库搜索

  win8.1系统有个强大的搜索功能,这个功能的最大优势就是可以迅速的搜索出来本地库各种文件夹和子文件夹,这样一来不但精准而且高效.为了能够简化这个功能,很多用户都愿意在桌面上新建立一个库搜索快捷方式,不过不知道怎么做.那么win8.1系统如何创建一个简便的库搜索呢? 1.打开计算机之后,在桌面的空白地方直接点击鼠标右键,建立一个快捷方式; 2.键入对象的地方,直接输进去%windir%explorer.exe search-ms; 3.然后就单击下一步,将这个快捷方式命名成"win8.1一键

firebug的一个有趣现象介绍_javascript技巧

复制代码 代码如下: var obj = {length:0,splice:function(){}} console.log(obj) 猜猜上面会打印出啥? 没错,打印出来的看起来是一个空数组... 在FIREBUG里如果一个对象同时拥有length属性和splice方法,就会被firebug显示为数组的形式... 如果以前注意过的话就会发现JQUERY就是这么写的,通过选择器打印出来的看起来跟数组一样. 一直以来我都很好奇为毛返回的数组,但是却有数组根本没有的方法,也没有数组该有的方法,比如

求帮忙设计一个有趣的电路图

问题描述 求帮忙设计一个有趣的电路图 有7个人 每人被分到2个按钮 分别是yes和no 每个人同时 按下 0个 1个或者两个按钮 根据按下的情况 分别是 1 每个人的灯的情况完全相同的话 代表yes的灯和no的灯都不亮 2 yes no的个数正好相同 则yes的灯和no的灯都亮 3 yes被按下的次数比no多 只亮yes 反之亦然 注意 1的情况是 全yes 全no 全不按 全按

安卓蓝牙搜索的最大时间长度是多少,一个手机最多能够搜索到多少台其他的设备

问题描述 安卓蓝牙搜索的最大时间长度是多少,一个手机最多能够搜索到多少台其他的设备 安卓蓝牙搜索的最大时间长度是多少,一个手机最多能够搜索到多少台其他的设备 解决方案 启动发现功能 如果你想要你的设备能被其他设备发现,调用startActivityForResult(Intent,int),传递一个ACTION_REQUEST_DISCOVERABLE action Intent给它.这将发送一个请求给系统设置以启动可被发现模式.可被发现模式一般默认持续120秒,你可以通过给Intent添加一个

定义一个双向链表,并且设计一个函数,查找并且插入元素,保持链表有序排列

问题描述 定义一个双向链表,并且设计一个函数,查找并且插入元素,保持链表有序排列 定义一个双向链表,并且设计一个函数,查找并且插入元素,保持链表有序排列 解决方案 http://www.open-open.com/lib/view/open1410699307711.html 解决方案二: STATUS insert_data_into_double_link(DOUBLE_LINK_NODE** ppDLinkNode, int data) { DOUBLE_LINK_NODE* pNode;