select * from
(
select gzzt00,sum(zcje00) zcje00 from tb_ryxfb0
group by gzzt00
order by zcje00 desc
)
where rownum<=10
(
select gzzt00,sum(zcje00) zcje00 from tb_ryxfb0
group by gzzt00
order by zcje00 desc
)
where rownum<=10
解决方案 »
- OCIEnvCreate返回-1
- ORACLE中VARCHAR2类型
- SQL 问题 快 急
- 不显示删除回复显示所有回复显示星级回复显示得分回复 新手求助~想了两个小时未想出来
- 结果集内再有条件求和
- 我要崩溃了,新建的本地数据库连不上。谁能帮我。紧急!
- 出现ORA-12571: TNS: 包写入程序失败,请帮忙
- windows XP 下安装oracle9i(3CD)时,universal installer不能启动
- 请教:ORACLE安装后为什么不能用???
- 我的Oracle为什么无法安装?(p4,128ram,Winxp 专业版)
- 关于全文检索的问题
- Oracle8.0.5 SID有orcl和orc1
我记得有一个ORACLE中有一个函数可以实现,想不起来了
但还是对你的热情表示感谢,
(
select * from
(
select gzzt00,sum(zcje00) zcje00 from tb_ryxfb0
group by gzzt00
)
order by zcje00 desc
)
where rownum<=10
因为他利用的子查询,在子查询里面,假如使用rownum,其实,是利用了oracle的rowid这个伪列。
但是,对子查询使用rownum,oracle已经不能为你找到这个rownum,这个时候的rownum就是重新分配出来的,和数据库原来的rowid一点关系都没有了。其实,是你自己的理解错误了,你才应该去学习一下。他写错了一个地方,就是order by的那个地方。select * from
(
select gzzt00,sum(zcje00) zcje00 from tb_ryxfb0
group by gzzt00
order by sum(zcje00) desc
)
where rownum<=10还有,你这样说别人,很伤别人的心的。别人好心好意帮助你,结果,被你一棍子,虽然你道歉了,要是我打你一顿,然后抱歉,你接受吗?
我找到解决方法了
select * from
(
SELECT gzzt00, sum(zcje00),
RANK() OVER (PARTITION BY gzzt00
ORDER BY sum(zcje00), DESC) "sn"
FROM tb_ryxfb0
group by gzzt00
)
order by sn<5
可以查出各gzzt00 前5名的情况。