oracle查询数据,获取每组中最值
2017-09-02 11:11
225 查看
oracle查询数据时,获取每组中的最值
主要方式是使用rank() over方法,具体方法使用,网上也有很多示例。
查询思想为:首先按照需要条件进行分组(PARTITION BY),然后通过order by 对每一组数据进行排序,每组中的每条数据
会存在一个rank(可自己命名)值,根据分组条件和排序方式进行组内排序,最后通过每组rank值取数据即可。
以下是一个完整的查询语句。
select usco.login_name,usco.employee_number,usco.name,usco.paper_name,usco.exam_score
from
(select distinct u.login_name,u.employee_number,u.name,pic.paper_name,gs.exam_score,
rank() OVER (PARTITION BY u.login_name,u.name
ORDER BY gs.exam_score
desc) rank
from got_score gs
leftjoin util_sys_user u
on u.user_id=gs.user_id
leftjoin got_exam_grant eg
on u.user_id=eg.user_id
leftjoin got_paper_info_copy pic
on eg.exam_id=pic.exam_id
where( pic.paper_name
like'%市场培训知识考试%')
and gs.user_id = u.user_id
and gs.exam_id=eg.exam_id ) usco
where usco.rank=1
以上仅为开发过程中对此方法使用的见解,若存在错误之处请指出。不胜感激!
主要方式是使用rank() over方法,具体方法使用,网上也有很多示例。
查询思想为:首先按照需要条件进行分组(PARTITION BY),然后通过order by 对每一组数据进行排序,每组中的每条数据
会存在一个rank(可自己命名)值,根据分组条件和排序方式进行组内排序,最后通过每组rank值取数据即可。
以下是一个完整的查询语句。
select usco.login_name,usco.employee_number,usco.name,usco.paper_name,usco.exam_score
from
(select distinct u.login_name,u.employee_number,u.name,pic.paper_name,gs.exam_score,
rank() OVER (PARTITION BY u.login_name,u.name
ORDER BY gs.exam_score
desc) rank
from got_score gs
leftjoin util_sys_user u
on u.user_id=gs.user_id
leftjoin got_exam_grant eg
on u.user_id=eg.user_id
leftjoin got_paper_info_copy pic
on eg.exam_id=pic.exam_id
where( pic.paper_name
like'%市场培训知识考试%')
and gs.user_id = u.user_id
and gs.exam_id=eg.exam_id ) usco
where usco.rank=1
以上仅为开发过程中对此方法使用的见解,若存在错误之处请指出。不胜感激!
相关文章推荐
- oracle或mysql分组查询并且获取前3条排序后的数据
- oracle查询分组数据中的最后一条数据和每组的数量
- (oracle/mysql)查询出分组查询每组的第一条数据
- oracle或mysql获取分组后每组的前三条数据
- oracle跨库访问查询、数据获取、打印(测试【已通】)
- oracle多表分组查询,每组拿出最新一条数据
- 本地的手机号码归属地查询-oracle数据
- oracle查询为空或null的数据
- 如何解决oracle分页查询数据重复问题
- Oracle查询重复数据与删除重复记录方法
- Oracle查询重复数据并删除,只保留一条记录
- Oracle、MySql、SQLServer 数据分页查询
- Oracle 查询表信息获取表字段及字段注释
- 数据查询语言(Oracle VS MySQL)
- Oracle基础知识笔记(4) 简单查询、限定查询、数据的排序
- oracle 查询单表某个字段 数据是否有重复
- ORACLE查询第N到M条数据
- Oracle查询重复记录,分页和去掉重复数据的查询语句
- oracle 百万数据查询优化技巧
- linux通过awk命令,查询日志,分析数据,获取平均时间shell脚本