oracle等级函数,等级函数查询

1.一般等级查询,使用order by 和 rownum完成.例如,查询最近两次做的snapshot的snap_id,

select snap_id from ( select * from dba_hist_snapshot a order by a.snap_id desc) where rownum<=2;

2.rank函数分析功能

其实oracle对于rank和dense_rank已经支持合计功能,不过这次我仅仅使用了其分析功能。具体语法如下:RANK ( ) OVER ( [query_partition_clause] order_by_clause )。

CREATE TABLE rank(subject VARCHAR2(100),mark NUMBER);

SQL> select * from rank;

SUBJECT MARK

-------------------------------------------------------------------------------- ----------

Math 20

Math 40

Math 40

Math 50

Math 70

English 90

English 80

English 85

English 85

Chinese 79

Chinese 93

Chinese 85

Chinese 98

13 rows selected

查出前三名

SQL> select * from (select rank() over(partition by subject order by mark desc) rk,a.* from rank a ) t where t.rk<4;

RK SUBJECT MARK

---------- -------------------------------------------------------------------------------- ----------

1 Chinese 98

2 Chinese 93

3 Chinese 85

1 English 90

2 English 85

2 English 85

1 Math 70

2 Math 50

3 Math 40

3 Math 40

10 rows selected[@more@]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值