score_info表有studentID,score,classID三个字段
查询出每个班级分数最高的人是求出每个班级最高得分所对应的studentID~!在线等
查询出每个班级分数最高的人是求出每个班级最高得分所对应的studentID~!在线等
解决方案 »
- asp.net无法连接oracle,tns无法解析指定的连接标识符
- 存储过程中的“||”符号啥意思
- 紧急求助关于归档问题
- 11g在xml处理方面哪些大的改善啊
- 关于预制语句使用的疑问,请高手指点一下
- 此軟件,("quest sql navigator "),求cd_key
- 在linux9上面安装oracle817缺少ins_net_client.mk 急阿。
- oracle 安装错误 ora-03113:通信通道的文件结束 在线等 急急!!
- Win2k中启动OracleOraHome81TNSListener服务错误,求救!
- 请教各位大神一个sql面试题,关于where子查询的,我看不懂啊,求教!!
- 请教oracle blob类型保存图片问题
- 我的电脑内存太小了,装了一个plsql和Oracle的客户端。但是当连接到其他电脑的数据库的数据库出错??????
from
(
select t.*,row_number() over(partition by classID order by score desc) rn
from score_info
)
where rn=1;
select classID, studentID, score, dense_rank() over (partition by classID order by score desc) rk from score_info) where rk = 1;
oracle中分析函数的使用方法,详细见http://hi.baidu.com/wencong402/blog/item/0a8dbb29634738fd98250a2d.html
create table score_info
(
studentID varchar(6),
score number,
classID varchar(6)
)insert into score_info values('100001',80,'1');
insert into score_info values('100002',70,'1');
insert into score_info values('100003',50,'1');
insert into score_info values('200001',90,'2');
insert into score_info values('200002',70,'2');
insert into score_info values('200003',85,'2');
insert into score_info values('200004',80,'2');
insert into score_info values('300001',60,'3');
insert into score_info values('300002',75,'3');
commit;select k.*
from score_info k,
(select classid, max(score) as max_score
from score_info
group by classid) t -- 可以求出各班级的最高分数,然后关联一下,就可以球相关的STUDENTID
where k.classid = t.classid
and k.score = t.max_score
--分析函数确实有很好的效果,但是建议楼主先学好基础的SQL语法吧
嘎嘎~~
select studentid,score,classid from score_info
where (score,classid) in
(select max(score) score,classid from score_info group by classid)
如果是这样的话,就用我的代码或者将2楼的dense_rank()改成rank()
如果你只要列出其中一个的话,就用1楼和2楼的,不过有点不符合常理
SELECT K.*
FROM SCORE_INFO K,
(SELECT CLASSID, MAX(SCORE) AS MAX_SCORE
FROM SCORE_INFO
GROUP BY CLASSID) T STUDENTID
WHERE K.CLASSID = T.CLASSID
AND K.SCORE = T.MAX_SCORE SELECT A.*
FROM (SELECT CLASSID,
STUDENTID,
RANK() OVER(PARTITION BY CLASSID ORDER BY SCORE DESC) S
FROM SCORE_INFO) A
WHERE A.S = 1;