2007-08-29
请教:ORACLE中一条语句返回多种记录类型的TOP N?
关键字: 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来做了,请教一下。
↓ 附件图片删除不了```
===============补充============
换种类似的简单的来说明一下我的意思:
比如下表这张表,
+----------------------+
| 学生 | 学科 | 成绩 |
+----------------------+
| AA | 语文 | 93 |
+----------------------+
| BB | 语文 | 88 |
+----------------------+
| CC | 语文 | 72 |
+----------------------+
| AA | 数学 | 88 |
+----------------------+
| BB | 数学 | 77 |
+----------------------+
| CC | 数学 | 66 |
+----------------------+
我想返回各科成绩排名前2的记录:
得到:
+----------------------+
| 学生 | 学科 | 成绩 |
+----------------------+
| AA | 语文 | 93 |
+----------------------+
| BB | 语文 | 88 |
+----------------------+
| AA | 数学 | 88 |
+----------------------+
| BB | 数学 | 77 |
+----------------------+
这个语句应该怎么写呢?如果有多少门学科是动态追加的,是不是就不能用UNION来做了,请教一下。
↓ 附件图片删除不了```
评论
咖啡舞者
2007-09-18
明白了,用分析函数来做,如:
select * from( select name,subject,score,rank()over(partition by subject order by score desc) mm from test
)where mm<=3
感谢楼上的提示。
select * from( select name,subject,score,rank()over(partition by subject order by score desc) mm from test
)where mm<=3
感谢楼上的提示。
Friedrich
2007-08-29
ORACLE里面可以用分组排名函数,大概可以解决楼主的问题
http://www.cnblogs.com/lizw/archive/2007/04/26/729005.aspx
http://www.cnblogs.com/lizw/archive/2007/04/26/729005.aspx
咖啡舞者
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来做了,请教一下。
比如下表这张表,
+----------------------+
| 学生 | 学科 | 成绩 |
+----------------------+
| AA | 语文 | 93 |
+----------------------+
| BB | 语文 | 88 |
+----------------------+
| CC | 语文 | 72 |
+----------------------+
| AA | 数学 | 88 |
+----------------------+
| BB | 数学 | 77 |
+----------------------+
| CC | 数学 | 66 |
+----------------------+
我想返回各科成绩排名前2的记录:
得到:
+----------------------+
| 学生 | 学科 | 成绩 |
+----------------------+
| AA | 语文 | 93 |
+----------------------+
| BB | 语文 | 88 |
+----------------------+
| AA | 数学 | 88 |
+----------------------+
| BB | 数学 | 77 |
+----------------------+
这个语句应该怎么写呢?如果有多少门学科是动态追加的,是不是就不能用UNION来做了,请教一下。
ddandyy
2007-08-29
不太明白你要做什麽
不過做是肯定能做的
大不了用union all就是了
不過做是肯定能做的
大不了用union all就是了
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 13744 次
- 性别:

- 来自: 福州

- 详细资料
搜索本博客
最新评论
-
[原]BIRT 2.2.2 运行时使 ...
这种方式是变相修改BIRT自带的JDBC ODA Driver实现,也许能工作, ...
-- by RogerTu -
BIRT Report Engine API
是个好文章,哈哈
-- by fy_kenny -
BIRT Report Engine API
官方网上的。
-- by 咖啡舞者 -
BIRT Report Engine API
原文出处?
-- by fangzhouxing -
请教:ORACLE中一条语句返 ...
明白了,用分析函数来做,如: select * from( select nam ...
-- by 咖啡舞者






评论排行榜