Oracle排名函数(Rank)实例详解
·类似:新闻表,求栏目点击率在前3位的新闻。
商品表,求各类别销售额在前10位的商品。
select * from (
select sc.s_id,sc.s_name,sub_name,sc.score,
dense_rank() over
(partition by sub_name order by score desc) 名次
from t_score sc
) x
where x.名次 =2
rank() over (order by 排序字段 顺序)
rank() over (partition by 分组字段 order by 排序字段 顺序)
1.顺序:asc|desc 名次与业务相关:
示例:找求优秀学员:成绩:降序 迟到次数:升序
2.分区字段:根据什么字段进行分区。
问题:分区与分组有什么区别
·分区只是将原始数据进行名次排列(记录数不变),
·分组是对原始数据进行聚合统计(记录数变少,每组返回一条),注意:聚合。
脚本:
create table t_score
(
autoid number primary key,
s_id number(3),
s_name char(8) not null,
sub_name varchar2(20),
score number(10,2)
);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (8, 1, 张三 , 语文 , 80);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (9, 2, 李四 , 数学 , 80);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (10, 1, 张三 , 数学 , 0);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (11, 2, 李四 , 语文 , 50);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (12, 3, 张三丰 , 语文 , 10);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (13, 3, 张三丰 , 数学 , null);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (14, 3, 张三丰 , 体育 , 120);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (15, 4, 杨过 , java , 90);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (16, 5, mike , c++ , 80);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (3, 3, 张三丰 , oracle , 0);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (4, 4, 杨过 , oracle , 77);
insert into t_score (autoid, s_id, s_name, sub_name, score)
values (17, 2, 李四 , oracle , 77);
commit;
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 Oracle排名函数(Rank)实例详解
相关文章
- Oracle minus用法详解及应用实例
- 结构深入理解Oracle索引组织表结构(oracle的索引组织表)
- 使用Oracle查询当前实例的实践指南(oracle查询当前实例)
- 管理Oracle实例管理之创建新世界(oracle创建实例)
- Oracle: 小数的进位处理(oracle小数进位)
- Oracle集群软件:改变数据库智能管理模式(oracle集群软件)
- Oracle获取自增ID的简易操作(oracle获取自增id)
- 指定日期 Oracle 数据查询方法详解(oracle查询某一天)
- 简明步骤:Oracle数据库实例切换(oracle切换数据库实例)
- Oracle数据库中数据默认值设置与应用详解(oracle数据默认值)
- Oracle中连接详解,让你轻松掌握连接操作技巧。(oracle中连接)
- Oracle块跟踪:实例解析(oracle块跟踪)
- Oracle实例恢复一次成功的艰巨之旅(oracle恢复实例)
- 深入了解Oracle实例:一种强大的数据库技术(什么是oracle 实例)
- Oracle:一天,改变一切(oracle一天)
- Oracle 11 危机:漏洞隐忧不容忽视(oracle 11漏洞)
- Oracle表设计助力数据稳定性冻结表方案(oracle冻结表设计)
- Oracle自带表 开启功能的一扇窗口(oracle中自带的表)
- Oracle中知晓的等号字符-解析(oracle中的等于字符)
- Oracle数据库中建表的步骤及实例示范(oracle中的建表步骤)
- Oracle中使用左连接来获取有用信息(oracle 中左连接)
- Oracle实例间双向监听实践(oracle两个实例监听)
- Oracle IN查询双重优势一步搞定复杂任务(oracle两个in查询)
- Oracle VM 的无限扩展潜力(oracle vm 扩展)