获取oracle中待查询数据排序后的排名解决方法
获取oracle中待查询数据排序后的排名
eg:
create table dml.cases(
num NUMBER primary key, --序号
name VARCHAR2(50), --案例名称
intro VARCHAR2(100), --案例简介
);
现在希望获得num=10 的数据 在按num 降序排列后的排名,也就是第几个
------解决方案--------------------
select * from (
select a.*,row_number()over(order by num desc) as no from cases a
)
where no=10
------解决方案--------------------
eg:
create table dml.cases(
num NUMBER primary key, --序号
name VARCHAR2(50), --案例名称
intro VARCHAR2(100), --案例简介
);
现在希望获得num=10 的数据 在按num 降序排列后的排名,也就是第几个
------解决方案--------------------
select * from (
select a.*,row_number()over(order by num desc) as no from cases a
)
where no=10
------解决方案--------------------
- SQL code
select rownum rn,t.* from (select * from dml.cases order by num desc) t where t.num=10;
------解决方案--------------------
不能用rownum,因为rownum必须包含rownum=1的值,否则取不到
可以用分析函数row_number()帮你解决问题
------解决方案--------------------
- SQL code
--第10个数据 SELECT * FROM (SELECT rownum rn, t.* FROM (SELECT * FROM dml.cases ORDER BY num DESC) t) WHERE rn = 10;
------解决方案--------------------
create table dml.cases(
num NUMBER primary key, --序号
name VARCHAR2(50), --案例名称
intro VARCHAR2(100), --案例简介
);
再补充个问题啊,就是要查按num 降序排列第十个数据怎么写,谢谢
1 select count(*) from dml.cases where num>10;
2 补充问题:select * from dml.cases where rowid=10 order by dese;
------解决方案--------------------
1 select count(*)+1 from dml.cases where num>10;
2 补充问题:select * from dml.cases where rowid=10 order by dese;