有这样一张表A
fk_eventid fk_assetid sum
90010 4 80
90006 1 20
90005 1 15
90008 3 50
90008 2 40
90009 4 100
90007 4 70
90011 3 30
现在我要得出这样的一个需求:得出每个fd_assetid的TOP2(按SUM排),然后在按SUM 降序排列
比如通过上面的数据可以得出下面的结果
90009 4 100
90010 4 80
90008 3 50
90008 2 40
90011 3 30
90006 1 20
90005 1 15谢谢各位....
fk_eventid fk_assetid sum
90010 4 80
90006 1 20
90005 1 15
90008 3 50
90008 2 40
90009 4 100
90007 4 70
90011 3 30
现在我要得出这样的一个需求:得出每个fd_assetid的TOP2(按SUM排),然后在按SUM 降序排列
比如通过上面的数据可以得出下面的结果
90009 4 100
90010 4 80
90008 3 50
90008 2 40
90011 3 30
90006 1 20
90005 1 15谢谢各位....
解决方案 »
- Oracle中Blob类型存储的是备注信息(汉字),现在需要用关键字过滤备注从而达到对表中数据的过滤,怎么做呢?
- Oracle 9i启动出现问题。
- 多线程访问ORACLE共有资源
- 如何将OCCI中的resultset->getNumber()类型转换成能插入datagridview中的String^?
- 高分求高手请指点:数据库备份方案。
- 在oracle 中向表中插入数据的简单问题?请大家进来看看吧
- 求Oracle 11g补丁
- 一个SELECT语句的优化问题!
- sql*plus中的字段显示时是列向的,怎样改成横向啊?
- <感谢>为什么不能su切换oracle用户安装数据库?
- 问一个简单的的SQL问题,先谢各位了
- 谁能说一下redhat 企业版上安装oracle 客户端的步骤?
from
(select fk_eventid,fk_assetid,sum,row_number() over(partition by fk_assetid order by sum desc) recno
from ttt) where recno<=2
order by sum desc
FK_EVENTID FK_ASSETID SUM
---------- ---------- ----------
90009 4 100
90010 4 80
90008 3 50
90008 2 40
90011 3 30
90006 1 20
90005 1 15
from (select fk_eventid,fk_assetid,sum,row_number() over(partition by fk_assetid order by sum desc) rn from table1)
where rn<=2 order by fk_assetid desc,sum desc;
select * from temp t
order by t.sum desc ,
t.assid desc;1 90009 4 100
2 90010 4 80
3 90007 4 70
4 90008 3 50
5 90008 2 40
6 90011 3 30
7 90006 1 20
8 90005 1 15
FROM A
ORDER BY ROW_NUMBER() OVER(ORDER BY SUM1 DESC)
FROM A
ORDER BY SUM1 DESC
2 union
3 select 90006 fk_eventid, 1 fk_assetid, 20 sum1 from dual
4 union
5 select 90005 fk_eventid, 1 fk_assetid, 15 sum1 from dual
6 union
7 select 90008 fk_eventid, 3 fk_assetid, 50 sum1 from dual
8 union
9 select 90008 fk_eventid, 2 fk_assetid, 40 sum1 from dual
10 union
11 select 90009 fk_eventid, 4 fk_assetid, 100 sum1 from dual
12 union
13 select 90007 fk_eventid, 4 fk_assetid, 70 sum1 from dual
14 union
15 select 90001 fk_eventid, 3 fk_assetid, 30 sum1 from dual
16 )
17 select fk_eventid,fk_assetid,sum1
18 from (select fk_eventid,fk_assetid,sum1,row_number()over(partition by fk_assetid order by sum1
desc ) rn from a )
19 where rn<=2
20 order by sum1 desc
21 /FK_EVENTID FK_ASSETID SUM1
---------- ---------- ----------
90009 4 100
90010 4 80
90008 3 50
90008 2 40
90001 3 30
90006 1 20
90005 1 157 rows selected.