Oracle 查询前10%的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 查询前10%的数据相关的知识,希望对你有一定的参考价值。
SQL Server里有查询10%的语句。。
Oracle里的要怎么实现?求高手解答
oracle本身不提供top关键字,如果想要查询前几条,可以使用rownum伪列实现。
实现步骤:
1、使用count聚合函数统计共有多少条数据
select count(*) from Table1;
2、根据count聚合查询总条数乘以百分比,来确定要查询的条数
select count(*)*0.1 from Table1; 3、查询该表数据,取出伪列小于共有数据的百分比的数据
ROWNUM伪列的特点:
1、 ROWNUM是按照记录插入时的顺序排序的
2、 ROWNUM并不实际存在,是对筛选后的结果集的一个排序,如果不存在结果集就不会有ROWNUM
3、 ROWNUM不能用基表名作为前缀
4、在使用ROWNUM进行查询时,请注意:
1)若使用大于号(>),则只能使用(>0),其他均不可以
2)若使用小于号(<),同一般情况
3)若使用等于号(=),则只能使用等于1(=1)
参考技术A oracle里有个伪列rownum,利用这个列可以做个嵌套查询select *from(select rownum as num,col1这里加上其他列 from yourtable) t where num<(select count(1)from t)*0.1 参考技术B 查询前10%?
这个简单啊、你先计算总共有多少条记录、再乘以0.1得到10%应该是多少条记录、再选择在、那么多条记录就好了。。 参考技术C select * from table where rownum<=(select count(1) from table)*0.1本回答被提问者采纳
Oracle查询前几条数据的方法
由于Oracle不支持select top 语句,所以在Oracle中经常是用order by 跟rownum的组合来实现select top n的查询。简单地说,实现方法如下所示:select 列名1 ...列名n from(select 列名1 ...列名nfrom 表名 order by 列名1)where rownum <=N(抽出记录数)order by rownum asc如:select id,name from (select id,name from student order by name) where rownum<=10 order by rownum asc按姓名排序取出前十条数据附:取100-150条数据的方法1.最佳选择:利用分析函数row_number() over ( partition by col1 order by col2 )比如想取出100-150条记录,按照tname排序select tname,tabtype from (select tname,tabtype,row_number() over ( order by tname ) rn from tab) where rn between 100 and 150;2. 使用rownum 虚列select tname,tabtype from (select tname,tabtype,rownum rn from tab 参考技术A 由于Oracle不支持select top 语句,所以在Oracle中经常是用order by 跟rownum的组合来实现select top n的查询。
简单地说,实现方法如下所示:
select 列名1 ...列名n from(select 列名1 ...列名n
from 表名 order by 列名1)where rownum <=N(抽出记录数)
order by rownum asc
如:select id,name from (select id,name from student order by name) where rownum<=10 order by rownum asc
按姓名排序取出前十条数据
附:取100-150条数据的方法1.
最佳选择:利用分析函数
row_number() over ( partition by col1 order by col2 )比如想取出100-150条记录,按照tname排序
select tname,tabtype from (
select tname,tabtype,row_number() over ( order by tname ) rn from tab
) where rn between 100 and 150;
2. 使用rownum 虚列
select tname,tabtype from (
select tname,tabtype,rownum rn from tab
以上是关于Oracle 查询前10%的数据的主要内容,如果未能解决你的问题,请参考以下文章