(1)   函数:  over()的作用及用法:    -- 分区(分组)求和。

RANK ( ) OVER ( [query_partition_clause] order_by_clause )
DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )
可实现按指定的字段分组排序,对于相同分组字段的结果集进行排序,
其中PARTITION BY 为分组字段,ORDER BY 指定排序字段

over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()/sum() 等一起使用。
其参数:over(partition by columnname1 order by columnname2)
含义:按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序。

1.例如:employees表中,有两个部门的记录:department_id =10和20
select department_id,rank() over(partition by department_id order by salary) from employees就是指在部门10中进行薪水的排名,在部门20中进行薪水排名。如果是partition by org_id,则是在整个公司内进行排名。(org_id: 公司ID)

2.使用子分区(分组)查出各部门薪水连续的总和。注意按部门分区(分组)。注意over(...)条件的不同,
sum(sal) over (partition by deptno order by ename) 按部门“连续”求总和
sum(sal) over (partition by deptno) 按部门求总和
sum(sal) over (order by deptno,ename) 不按部门“连续”求总和
sum(sal) over () 不按部门,求所有员工总和,效果等同于sum(sal)。

SQL> break on deptno skip 1 -- 为效果更明显,把不同部门的数据隔段显示。
SQL> select deptno,ename,sal,
2 sum(sal) over (partition by deptno order by ename) 部门连续求和,--各部门的薪水"连续"求和
3 sum(sal) over (partition by deptno) 部门总和, -- 部门统计的总和,同一部门总和不变
4 sum(sal) over (order by deptno,ename) 连续求和, --所有部门的薪水"连续"求和
5 sum(sal) over () 总和, -- 此处sum(sal) over () 等同于sum(sal),所有员工的薪水总和
6 from emp ;

Result :

(2) Oracle中使用函数rank()over()排名的问题  --  不连续/连续排名

排序:

RANK( ) OVER(order by 列名 排序) 的结果是不连续的,如果有4个人,其中有3个是并列第1名,那么最后的排序结果结果如:1 1 1 4;

DENSE_RANK( ) OVER(order by 列名 排序) 的结果是连续的,如果有4个人,其中有3个是并列第1名, 那么最后的排序结果如:1 1 1 2;

如:

1.  SELECT COLA , RANK( ) OVER(order by COLE ASC )  E  FROM TABLE_A ;

2.  SELECT COLA , RANK( ) OVER(order by COLE ASC )  E  FROM TABLE_A ;

Result :

最新文章

  1. 结合Apache和Tomcat实现集群和负载均衡 JK 方式 2 (转)
  2. puppet的配置
  3. [转]iOS学习之UINavigationController详解与使用(三)ToolBar
  4. 服务器 tfs不提供 TeamFoundation服务。基础连接已经关闭
  5. ubuntu装机
  6. UVa 11572 (滑动窗口) Unique Snowflakes
  7. 理解C# Lazy<T>
  8. insert时出现主键冲突的处理方法【转载】
  9. NGUI研究之在Unity中使用贝塞尔曲线
  10. Spring MVC 中获取session的几种方法
  11. OpenGL ES2.0贴图
  12. STL算法设计理念 - 二元函数,二元谓词以及在set中的应用
  13. asp.net core Serilog的使用
  14. 入门项目 A6 lib common 登陆状态装饰
  15. MQ(1)---消息队列概念和使用场景
  16. JAVA覆写Request过滤XSS跨站脚本攻击
  17. 【Spark】Spark-架构
  18. angularjs探秘<二>表达式、指令、数据绑定
  19. Python代码小片段
  20. LogStash日志分析系统

热门文章

  1. 使用rem来开发你的移动端网站
  2. 个人博客作业Week2
  3. setTimeout和setInterval的区别以及如何写出效率高的倒计时
  4. NodeJS 初体验
  5. iOS 开发之SVN提交问题解决
  6. Nginx中rewrite实现二级域名、三级域名、泛域名、路径的重写
  7. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)
  8. MVC 使用 Ueditor富文本编辑器
  9. no route to host
  10. spring框架学习(四)自动装配