首页 新闻 赞助 找找看

oracle 这个看似简单的查询。。能用SQL实现吗?

0
悬赏园豆:5 [待解决问题]

有M,N 两个列,数据如下:

M N
A 87
A 70
A 32
B 99
B 62
B 23
C 444
C 351
C 97

数据规则:可以把M列当成学生编号,N列当成学生成绩,现在要取的是每个学生最好的前两门成绩,和编号一起显示出来,比如A学生的结果是

M N
A 87
A 70

 

哪位知道这样的SQL怎么写吗?

SQL
hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2013-07-25 15:54
< >
分享
所有回答(2)
0

select m,max(n) as cj from datetable group by m

union all

select  m,max(n) as cj from datatable a , (select m,max(n) as cj from datetable group by m ) b where a.m=b.m and a.n<>b.cj group by m

FangMu | 园豆:332 (菜鸟二级) | 2013-07-25 17:13
0

分组排序的问题啊:

select * from( select studentID,score, row_number() over (partition by score order by studentID desc) as rowno from table1) A where a.rowno<=2

kylin.chen | 园豆:983 (小虾三级) | 2013-07-25 19:17

这种方式感觉更容易理解

支持(0) 反对(0) mifeng2012 | 园豆:269 (菜鸟二级) | 2013-07-30 14:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册