oracle通过表中2个字段分组查询取数量最大的所有记录,有条件的去重
来源:互联网 发布:微商作图软件 编辑:程序博客网 时间:2024/05/21 07:48
select a.line_name, a.driver_id, a.driver_name, a.dept_no from (select s.line_name, s.driver_id, s.driver_name, s.dept_no, row_number() over(partition by s.driver_id order by count(s.driver_id) desc) rn from operate.OS_BUS_LINEOPERATE_TIMES s where s.income_date between to_date('2017-10-21', 'YYYY-MM-DD') and to_date('2017-11-20', 'YYYY-MM-DD') group by s.line_name, s.driver_id, s.driver_name, s.dept_no) a where a.rn = 1
业务需求是:
查询表中驾驶员及线路信息,且取驾驶员在某一线路上最大记录的数据行作为最终结果(相当于用驾驶员driver_id去重,即有条件的去重);
解决方法:
用过函数row_number() over(partition by 过滤字段 order by 排序字段) ,查询出个驾驶员的信息且用rownum排序。
我们最终只要取rownum = 1的结果行,则是最终结果;
如下图排序:
最终结果:
阅读全文
0 0
- oracle通过表中2个字段分组查询取数量最大的所有记录,有条件的去重
- oracle分组统计查询之后,获取数量最大的记录
- 分组查询取最大时间记录的方法Oracle
- 分组查询取最大时间记录的方法Oracle .
- 分组查询取最大时间记录的多种方式
- oracle如何通过sql查询表的所有字段名?
- 多个字段相同的重复记录去重
- sql语句:取按a列分组后,b列最大,的所有列的记录
- [MySQL]学习笔记- 用户行为表中,查询每个人的一条最新行为(分组 排序 取时间最大的一条记录)
- oracle 取各个分组的指定数量的值
- 分组查询最大最小记录的方法
- 按某一字段分组取最大(小)值所在行的数据,如何按字段删除重复记录
- Oracle查询数据库中所有表的记录数
- 转至Oracle查询数据库中所有表的记录数
- Oracle查询数据库中所有表的记录数
- Oracle查询数据库中所有表的记录数
- Oracle查询数据库中所有表的记录数
- 根据关键字查询oracle中所有表的记录
- springboot入门之hello world
- android接入支付宝提示支付取消的方法处理
- maven学习笔记3--setting.xml配置文件
- iOS-单元测试及代码覆盖率
- Java成长发展史
- oracle通过表中2个字段分组查询取数量最大的所有记录,有条件的去重
- handler基本原理
- html滚动条使用,以及页面有多个div块,如何让body页面不使用滚动条,只在某个div内使用滚动条
- Class的初认识
- 组合模式(Composite Pattern)
- Web、App测试区别
- 各领域公开数据集下载|资源
- mysql高可用方案对比
- poj1741 tree(点分治)