oracle分析函数,主要五大类

一等级函数:row_number();DENSE_RANK();Rank()

主要就是遇到相同排名时的区别,

查询各部门职位级别最高的2个人

select * from (select rybm,rymc,zzjgid,zwdj,row_number() over(partition by zzjgid order by zwjb desc ) rw  from t_rlzy_ry) where rw<2

二开窗(windowing)函数:用于计算不同的累计,如SUM,COUNT,AVG,MIN,MAX等,作用于数据的一个窗口上

1. order by 加则是当前分区的第一行到当前行的和,不加order by 则是当前分区的所有行的和

select zzjgid,rymc,df,sum(df) over(partition by zzjgid order by df) from t_rlzy_ry where df>0

2.rows窗口: "rows 5 preceding" 适用于任何类型而且可以order by多列。当前行之前第五行开始到当前行,一共6行

3.range窗口: "range 5 preceding" 适用于number和date类型,order by一列。当前行之前所有行的值大于当前行的值减去5的行

4.以下三条语句等效

over (order by salary rows between unbounded preceding and unbounded following)

over (order by salary range between unbounded preceding and unbounded following)

over (partition by null)

5.over (order by salary range between unbounded preceding and current row) 第一行到当前行

6.NULLS LAST/FIRST  控制排列顺序,最后或者最前

7.keep()取一个最大和最小值

select zzjgid,min(df) keep(dense_rank first order by df ) first,max(df) keep(dense_rank last order by df ) last from t_rlzy_ry group by zzjgid

8.ntile(N)将结果平均分成N等分

select zzjgid,rymc,df,ntile(5) over( order by df )  from t_rlzy_ry

9.first_value/last_value

SELECT ZZJGID,FIRST_value(sum(df) ) over (order by zzjgid rows between 1 preceding and 1 following ) pre,

sum(df) cur,

last_value(sum(df) ) over (order by zzjgid rows between 1 preceding and 1 following ) next

from t_rlzy_ry  group by zzjgid

10.CUME_DIST() OVER([partition_clause] order_by_clause) 返回该行在分组序列中的相对位置,返回值介于0到1之间

11.PERCENT_RANK() OVER([partition_clause] order_by_clause) 与CUME_DIST类似,本函数返回分组序列中各行在分组序列的相对位置。其返回值也是介于0到1之间,不过其起始值始终为0而终结值始终为1

三制表(reporting)函数:与开窗函数同名,作用于一个分区或一组上的所有列

计算每条记录在其对应记录集或其子集中所占的比例。

select zzjgid,rymc, ratio_to_report(df) over (partition by zzjgid) from  t_rlzy_ry

四LAG,LEAD函数:这类函数允许在结果集中向前或向后检索值,为了避免数据的自连接,它们是非常用用的.

比较相邻记录

SELECT ZZJGID,lag(sum(df) ,2) over (order by zzjgid  ) pre,sum(df) cur  from t_rlzy_ry  group by zzjgid --当前记录的前第二条

SELECT ZZJGID,LEAD(sum(df) ,2) over (order by zzjgid  ) pre,sum(df) cur  from t_rlzy_ry  group by zzjgid--当前记录的后第二条

五VAR_POP,VAR_SAMP,STDEV_POPE及线性的衰减函数:计算任何未排序分区的统计值

1.STDDEV ([distinct|all] col) OVER (analytic_clause)返回列的标准偏差。

2.STDDEV_POP(col) OVER (analytic_clause)返回该分组序列总体标准偏差

3.VAR_POP(col) OVER (analytic_clause)返回分组序列的总体方差,VAR_POP进行如下计算:(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)

4.VAR_SAMP(col) OVER (analytic_clause)与上类似,该函数返回分组序列的样本方差,,其计算公式为:(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / (COUNT(expr) - 1)

5.VARIANCE(col) OVER (analytic_clause)该函数返回分组序列方差,Oracle计算该变量如下:

如果表达式中行数为1,则返回0,如果表达式中行数大于1,则返回VAR_SAMP

oracle计算最大与最小之间数,oracle 分析函数相关推荐

  1. Oracle 计算两个日期之间的年月、日期,月份数、天数

    目录 Oracle 计算两个日期之间的月份数.月份列表.天数.日期列表 Oracle 计算两个日期之间的月份数.月份列表.天数.日期列表 获取日期之间的月数(包括自身) 时间:2019-05-30 至 ...

  2. Oracle 计算两日期间隔月数

    Oracle 计算两日期之间月数 实际应用中,有时候会计算两日期间隔天数.月数.如直接相减,可能会出问题,如: select 202110-202106 from dual; 结果为:4 看似正确,但 ...

  3. oracle计算两个日期之间相差几年几个月几天

    1.通过months_between() 计算两个日期之间相差几个月,并通过floor() 取整,例如 floor(months_between(date1,date2)) 2.通过相差的月份取相差年 ...

  4. oracle 年月相减求月数,oracle 时间相减,月度相加减

    oracle 时间相减,月份相加减 oracle 两个时间相减默认的是天数 oracle 两个时间相减默认的是天数*24 为相差的小时数 oracle 两个时间相减默认的是天数*24*60 为相差的分 ...

  5. oracle往据,指定日期查询数Oracle据库

    1,首先,介绍一下to_char函数 TO_CHAR 是把日期或数字转换为字符串,不能指定字符串长度. 使用TO_CHAR函数处理日期: TO_CHAR(number, '格式')  例如:TO_CH ...

  6. oracle输出一天所有秒数,Oracle函数通过秒数或分钟数获取时间段

    一同事叫帮忙写个函数,通过输入分钟数或秒数,获取一个时间段,尽管很简单,也还是贴出来一备需要的时候,直接拿来用: create 一同事叫帮忙写个函数,通过输入分钟数或秒数,获取一个时间段,,尽管很简单 ...

  7. Oracle怎么统计clob的行数,Oracle CLOB性能

    我正在使用JDBC(使用最新的驱动程序和UCP作为数据源)对Oracle10g运行查询,以检索CLOB(平均20K个字符).然而,性能似乎相当差:100个LOB的批量检索平均需要4个.从我的观察来看, ...

  8. oracle时间相减得到天_oracle中计算两个日期之间得天数、月数、年数

    1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_ ...

  9. oracle中计算两个日期之间得天数、月数、年数以及结合使用常用函数

    1.相差天数(两个日期相减)--Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_D ...

最新文章

  1. Go报错package github.com/astaxie/beego: exit status 128
  2. 放弃 Windows 后 ,开源操作系统能成为主流桌面系统吗?
  3. [健康]女人喝红酒的好处
  4. 伍迷随想冷饭集 之 瞻前顾后之随想
  5. java number 转 long_Java Number.longValue()用法及代码示例
  6. php 二分查找字符串,php实现的二分查找算法示例
  7. Java 发送163邮件
  8. 基于Unity的极乐净土/others MMD动画制作
  9. java前后端分离跨域解决方案
  10. 计算机视觉的研究热点 卷积神经网络,计算机视觉领域研究热点与前沿分析
  11. iOS透明导航栏的平滑过渡(进阶版)
  12. html炫酷在线,10款基于HTML5/CSS3的炫酷动画
  13. java 创建用户界面_建立图形用户界面 JAVA实验
  14. 指甲半月痕 血象和微量元素检查分析是否有贫血
  15. Processing 案例 | 扑面而来的满天繁星
  16. Typora工具免费版下载
  17. 【模块间的通讯】数据接口及通讯代理系统架构
  18. SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(六)
  19. 函数的返回值 return(基础)
  20. 【GRU时序预测】基于matlab卷积神经网络结合门控循环单元CNN-GRU时间序列预测【含Matlab源码 2287期】

热门文章

  1. 地球空间与数字测绘知识总结
  2. Python环境搭建与连接SQL Server类MyDBase的实现
  3. C语言试题三十八之将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。
  4. linux之在当前目录下删除不包含aa的文件
  5. Android之Error: ‘L‘ is not a valid file-based resource name character解决办法
  6. linux之netstat使用--10个常用的命令
  7. linux c之用fwrite和fread实现文件的复制
  8. 如何html中添加动态图片,把动态图片添加到视频画面中 视频添加自定义动态图片 视频加动态logo...
  9. java trim()函数_Java - split()函数和trim()函数的使用方法
  10. java怎么做系统_Java系统监控怎么做