likeju
create table studentInfo(
 id number(8) primary key,
 name varchar2(20) not null,
 ObjectName varchar2(20) not null,
 fenshu varchar2(2) not null
);
insert into studentInfo values(1,\'张三\',\'数学\',70);
insert into studentInfo values(2,\'张三\',\'语文\',80);
insert into studentInfo values(3,\'张三\',\'英语\',90);
insert into studentInfo values(4,\'王二\',\'数学\',80);
insert into studentInfo values(5,\'王二\',\'语文\',70);
insert into studentInfo values(6,\'李四\',\'数学\',90);
insert into studentInfo values(7,\'李四\',\'语文\',90);
求学员中每一科成绩最高的学员sql
1,select name, objectname,fenshu
  from studentinfo st
    where fenshu = (select max(fenshu) from studentinfo s where st.objectname=s.objectname);
2,
select name,ObjectName, fenshu
from 
(
select name,ObjectName,fenshu,
       row_number() over(partition by ObjectName order by fenshu desc) rn 
from studentInfo
)
where rn = 1
3,

SELECT a.NAME,a.Objectname,a.fenshu FROM studentinfo a ,
(SELECT Objectname,MAX(fenshu) fenshu from studentinfo t
GROUP BY Objectname ) b
WHERE a.objectname = b.objectname AND a.fenshu = b.fenshu

 

分类:

技术点:

相关文章: