论坛首页 入门技术论坛

请教:ORACLE中一条语句返回多种记录类型的TOP N?

浏览 3426 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-29  
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来做了,请教一下。


↓ 附件图片删除不了```
  • 大小: 14.9 KB
  • 描述: ORACLE中能不能用一条SQL语句 [b]分别[/b]返回EVENTTYPENAME下不同类型的的TOP N呢?
  • 大小: 14.9 KB
   发表时间:2007-08-29  
不太明白你要做什麽
不過做是肯定能做的
大不了用union all就是了
0 请登录后投票
   发表时间: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来做了,请教一下。
0 请登录后投票
   发表时间:2007-08-29  
ORACLE里面可以用分组排名函数,大概可以解决楼主的问题

http://www.cnblogs.com/lizw/archive/2007/04/26/729005.aspx
0 请登录后投票
   发表时间:2007-09-18  
明白了,用分析函数来做,如:
select * from( select name,subject,score,rank()over(partition by subject order by score desc) mm from test
)where mm<=3
感谢楼上的提示。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics