浏览 1119 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-08-29 关键字: SQL语句 TOP
ORACLE中能不能用一条SQL语句 分别返回EVENTTYPENAME下不同类型的的TOP N呢?
===============补充============ 换种类似的简单的来说明一下我的意思: 比如下表这张表, +----------------------+ | 学生 | 学科 | 成绩 | +----------------------+ | AA | 语文 | 93 | +----------------------+ | BB | 语文 | 88 | +----------------------+ | CC | 语文 | 72 | +----------------------+ | AA | 数学 | 88 | +----------------------+ | BB | 数学 | 77 | +----------------------+ | CC | 数学 | 66 | +----------------------+ 我想返回各科成绩排名前2的记录: 得到: +----------------------+ | 学生 | 学科 | 成绩 | +----------------------+ | AA | 语文 | 93 | +----------------------+ | BB | 语文 | 88 | +----------------------+ | AA | 数学 | 88 | +----------------------+ | BB | 数学 | 77 | +----------------------+ 这个语句应该怎么写呢?如果有多少门学科是动态追加的,是不是就不能用UNION来做了,请教一下。 ↓ 附件图片删除不了``` 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-29
不太明白你要做什麽
不過做是肯定能做的 大不了用union all就是了 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-29
换种类似的简单的来说明一下我的意思:
比如下表这张表, +----------------------+ | 学生 | 学科 | 成绩 | +----------------------+ | AA | 语文 | 93 | +----------------------+ | BB | 语文 | 88 | +----------------------+ | CC | 语文 | 72 | +----------------------+ | AA | 数学 | 88 | +----------------------+ | BB | 数学 | 77 | +----------------------+ | CC | 数学 | 66 | +----------------------+ 我想返回各科成绩排名前2的记录: 得到: +----------------------+ | 学生 | 学科 | 成绩 | +----------------------+ | AA | 语文 | 93 | +----------------------+ | BB | 语文 | 88 | +----------------------+ | AA | 数学 | 88 | +----------------------+ | BB | 数学 | 77 | +----------------------+ 这个语句应该怎么写呢?如果有多少门学科是动态追加的,是不是就不能用UNION来做了,请教一下。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-29
ORACLE里面可以用分组排名函数,大概可以解决楼主的问题
http://www.cnblogs.com/lizw/archive/2007/04/26/729005.aspx |
|
| 返回顶楼 | |
|
最后更新时间:2007-09-18
明白了,用分析函数来做,如:
select * from( select name,subject,score,rank()over(partition by subject order by score desc) mm from test )where mm<=3 感谢楼上的提示。 |
|
| 返回顶楼 | |






