partition by 函数
工作中用到的sql
selectt."ID",t."TITLE",t."SENDUSERID",t."SENDTIME",t."URL",t."USERID",t."TODOTYPE",t."MODELNAME",t."IMPORTANCE",t."SENDUSERNAME",t."SENDUSERDEPTNAME",t.DATAID,t.OPENFLAG,t.realuserid,t.status,t.donetime from
(select m."ID",m."TITLE",m."SENDUSERID",m."SENDTIME",m."URL",m."USERID",m."TODOTYPE",m."MODELNAME",m."IMPORTANCE",m."SENDUSERNAME",m."SENDUSERDEPTNAME",m.DATAID,m.OPENFLAG,m.realuserid,m.status,m.donetime , row_number() over(partition by m.DATAID,m.status,m.realuserid order by m."SENDTIME" desc) rn from (
select a."ID",a."TITLE",a."SENDUSERID",a."SENDTIME",a."URL",a."USERID",a."TODOTYPE",a."MODELNAME",a."IMPORTANCE",a."SENDUSERNAME",a."SENDUSERDEPTNAME",a.DATAID,b.OPENFLAG,b.userid as realuserid,b.status,b.donetimefrom TD_HORIZON_Info a, TD_HORIZON_User bwhere a.id = b.TODOID) m )twhere rn=1;
Parttion by 关键字是Oracle中分析性函数的一部分,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,聚合函数一般只有一条反映统计值的结果
场景:查询出每个部门工资最低的员工编号【每个部门可能有两个最低的工资员工】 --row_number() 顺序排序 select row_number() over(partition by deptid order by salary) my_rank ,deptid,USERID,salary from tsaler; --rank() (跳跃排序,如果有两个第一级别时,接下来是第三级别) select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler; --dense_rank()(连续排序,如果有两个第一级别时,接下来是第二级) select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler; -------方案3解决方案 select * from (select rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1; select * from (select dense_rank() over(partition by deptid order by salary) my_rank,deptid,USERID,salary from tsaler) where my_rank=1;
转载于:https://www.cnblogs.com/zhouyanan/p/6024072.html
partition by 函数相关推荐
- OVER(PARTITION BY)函数用法
OVER(PARTITION BY)函数介绍 开窗函数 Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返 ...
- 获得供应商最近一次报价:OVER(PARTITION BY)函数用法的实际用法
利用rownumber ,关键字partition进行小范围分页 方法一: --所有供应商对该产品最近的一次报价 with oa as ( select a.SupplierId ,UnitPrice ...
- row_number() OVER(PARTITION BY)函数
OVER(PARTITION BY)函数介绍 开窗函数 Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组 ...
- mysql去重取最大值,逻辑类似oracle的over(partition by)函数
像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据. oracle方法: 在oracle中,我们可以简单地用over(partition by)函 ...
- row_number() OVER(PARTITION BY)函数介绍
OVER(PARTITION BY)函数介绍 开窗函数 Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组 ...
- OVER(PARTITION BY)函数介绍(oracle数据库)
问题场景 最近在项目中遇到了对每一个类型进行求和并且求该类型所占的比例,当时考虑求出每种类型的和,并在java中分别对每一种类型的和与总和相除求出所占比例.后来,想到这样有点麻烦,并且项目中持久层使用 ...
- Oracle取排序的第五条数据,OVER(PARTITION BY)函数介绍 【oracle中按A分组按B排序,再取B中第一条数据的查询】...
目录 一.小案例: school表中有①id 序号②class 班级 ③score成绩 三个字段, 使用oracle实现按照班级分区,然后取班级中的第一名. 1.1测试数据如下: --创建学校表sch ...
- mysql 去重取最大值_mysql去重取最大值,逻辑类似oracle的over(partition by)函数
像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据. oracle方法: 在oracle中,我们可以简单地用over(partition by)函 ...
- python3 分割函数 partition rpartition 函数
partition 函数,其实这个函数跟split差不多,都是字符串切割的. 举个例子: >>> a = 'changzhi1990'>>> a.rpartitio ...
最新文章
- Python中list、set和tuple
- java多个数据库数据进行访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码...
- 听说,99%的数学家都算不出这道题
- java的文本框如何回车键触发按钮_java回车触发按钮的代码
- LeetCode 453. Minimum Moves to Equal Array Elements
- 「leetcode」35.搜索插入位置:每次遇到二分法,都是一看就会,一写就废
- [转]python 正则匹配中文
- visualcreators.com公司产品过滤漏洞!
- java计算机毕业设计网上书店进销存管理系统源码+数据库+系统+lw文档+mybatis+运行部署
- 测试打印机性能的软件,打印速度测试
- vector的小用法
- aardio - 时钟例程
- edge通常不会下载xxxx确保信任xxx怎么解决
- dns遭到劫持什么意思、dns遭到劫持怎么办有什么方法解决
- mc9s08dz60添加BootLoader实现CANboot下载更新功能
- 搜狗大数据总监、Polarr 联合创始人关于深度学习的分享交流
- RabbitMq install on Centos6.3
- Android 动态加载多版本SDK之DexClassLoader实践
- POJ 1984 Navigation Nightmare 多权值并查集
- 奥运五环图形 -《跟小海龟学Python》案例代码