用一条sql查询各科成绩前三名的s#,c#,score:(不用考虑成绩并列情况) SC(S#,C#,score) 成绩表 用一条sql查询各科成绩前三名的s#,c#,score:(不用考虑成绩并列情况) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 with t1 as (select s#,c#,score,row_number()over(partition by c# order by score desc) rn from sc)select * from t1 where rn<=3 如果考虑并列,你可以根据自己情况选择rank或者dense_rank函数 create table sc(s# varchar2(20), c# varchar2(20), score number);insert into sc values ('張三', '語文', 80);insert into sc values ('張三', '數學', 92);insert into sc values ('張三', '英語', 99);insert into sc values ('李四', '語文', 66);insert into sc values ('李四', '數學', 85);insert into sc values ('李四', '英語', 89);insert into sc values ('王五', '語文', 60);insert into sc values ('王五', '數學', 100);insert into sc values ('王五', '英語', 95);insert into sc values ('趙六', '語文', 100);insert into sc values ('趙六', '數學', 100);insert into sc values ('趙六', '英語', 100);commit;select s#,c#,score,rfrom (select s#, c#, score, rank() over (partition by c# order by score desc) rfrom sc)where r < 4order by c#, r;S# C# SCORE R---------- ---------- ---------- ----------王五 數學 100 1趙六 數學 100 1張三 數學 92 3趙六 英語 100 1張三 英語 99 2王五 英語 95 3趙六 語文 100 1張三 語文 80 2李四 語文 66 3 能不能在一个大表中建立多个分区,删掉一个分区后,能否从新恢复 求一个参数游标的问题 这种查询如何实现? 创建新用户问题 麻烦!!!300分求oracle 8.17版,分不够可以加,只要能找到8.17版! rst->getString(1) 当读取的字符串超过15个就出现异常!请救救我 关于两个表关联的问题,求帮忙解答 新人求救,如何用企业管理建表的时候能够像SQL SERVER 那样让主键自动+1 初学ORACLE,安装完成后服务正常启动,SQL PLUS但进不去? 关于group求SQL oracle无法找到正在调用的程序单元 关于job的操作
from sc)
select * from t1
where rn<=3
create table sc(s# varchar2(20), c# varchar2(20), score number);
insert into sc values ('張三', '語文', 80);
insert into sc values ('張三', '數學', 92);
insert into sc values ('張三', '英語', 99);
insert into sc values ('李四', '語文', 66);
insert into sc values ('李四', '數學', 85);
insert into sc values ('李四', '英語', 89);
insert into sc values ('王五', '語文', 60);
insert into sc values ('王五', '數學', 100);
insert into sc values ('王五', '英語', 95);
insert into sc values ('趙六', '語文', 100);
insert into sc values ('趙六', '數學', 100);
insert into sc values ('趙六', '英語', 100);
commit;select s#,c#,score,r
from (
select s#, c#, score, rank() over (partition by c# order by score desc) r
from sc
)
where r < 4
order by c#, r;S# C# SCORE R
---------- ---------- ---------- ----------
王五 數學 100 1
趙六 數學 100 1
張三 數學 92 3
趙六 英語 100 1
張三 英語 99 2
王五 英語 95 3
趙六 語文 100 1
張三 語文 80 2
李四 語文 66 3