/************************
*标题:分析函数analytic functions
*时间:2016-07-07
*作者:clark
*************************/
分析函数:基于一组记录(行),计算聚合之的函数;
和集合函数的区别:
(1)对于每个分组,返回多个行,而不是一个行;
(2)分析的一组记录,称为窗口
(3)每一行,都有一个滑动的窗口;
(4)计算当前行的时候,窗口决定了完成这个计算的行的范围;
(5)在查询语句中,分析函数是最后的操作;即,它在where ,group by
order by ,having之后执行;
(6)因此,分析函数只能出现在select list或者 order by 语句中;
(7)分析函数一般用于计算累加,移动,集中或者报告总量

–analytic_function::=
analytic_function ( aruments ) over ( analytic_clause)

–analytic_clause::=
query_partition_clause order_by_clause windowing_clause
–注:表明分析函数作用的一个查询的结果集,它放在from,where group by,having字句之后

–query_partition_clause::=
partition by (expr)
–注:partition by 字句;根据一个或者多个expr将结果集(分析函数作用的一个查询的结果集)分割成组;

–order_by_clause::=
order siblings by (expr|position|c_alias) (asc|desc) nulls (first|last)
–注:order_by字句指定了一个数据分区中数据排序;
–(1)使用rank排列值得实惠,order by多个键值特别有用,第二个表达式可以解决第一个表达式相同的值
–注:order by a,b,c
–函数表现为:cume_dist,dense_rank,ntile,percent_rank,rank每一列返回相同的结果
–row_number分配没有给列一个不同的值;
–对于其他解析函数,结果以来窗口;(逻辑窗口,物理窗口)

/*===================================================
windows_clause:重点,难点
=====================================================*/

–windowing_clause::=

(rows|range) between (unbounded preceding|current row|value_expr preceding/following) and (unbounded following|current row|value_expr preceding/following)

(rows|range) (unbounded preceding|current row|value_expr preceding)


rows,指定窗口为物理行
range,指定窗口为逻辑的偏移量
–窗口的移动从上往下
–order by 返回的


–between and
指定窗口的开始点和结束点


–unbounded preceding:指定的窗口从第一个分区开始;是起点规范
–unbounded following:指定窗口结束在分区的最后一行,是终点规范
–value_expr preceding/following


current row
–注:指定了窗口开始在当前行;


value_expr preceding/following
–注:value_expr preceding开始,必须value_expr preceding结束;
–value_expr following 开始,必须value_expr following 结束;


rows value_expr preceding/following
–注:
value_expr 是物理偏移量,它必须是正确的数字或者表达式
value_expr是起点,必须是终点的前一行;


range value_expr preceding/following
–注:
–如果value_expr是数值,order by 必须是数值
–如果value_expr是区间值,order by 必须是日期数据类型
–如果忽略windows_clause;则窗口是unbounded preceding and current row;

/************************
*标题:avg函数
*时间:2016-07-07
*作者:clark
*************************/
–(1)聚合aggregate
select avg(out_row) from j1_dw.etl_exdw_log
–(2)分析例子
/*—————————————
****rows bwteen
(1)unbounded PRECEDING AND current row
(2)nbounded PRECEDING AND unbounded following
(3)无windows_clause 等同于nbounded PRECEDING AND unbounded following
(4)1 preceding and 1 following
—————————————–*/
–ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
SELECT unit_id,
unit_code,
tjrq_q,
out_row,
AVG(out_row) OVER(PARTITION BY unit_id, tjrq_q ORDER BY tjrq_q /ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING/) AS c_mavg
FROM etl_exdw_log
ORDER BY unit_id, unit_code, tjrq_q, out_row

–rows BETWEEN unbounded PRECEDING AND current row
SELECT unit_id,
unit_code,
tjrq_q,
out_row,
AVG(out_row) OVER(PARTITION BY unit_id, tjrq_q ORDER BY tjrq_q rows BETWEEN unbounded PRECEDING AND current row) AS c_mavg
FROM etl_exdw_log
ORDER BY unit_id, unit_code, tjrq_q, out_row

–rows BETWEEN unbounded PRECEDING AND unbounded following
SELECT unit_id,
unit_code,
tjrq_q,
out_row,
AVG(out_row) OVER(PARTITION BY unit_id,tjrq_q ORDER BY tjrq_q rows BETWEEN unbounded PRECEDING AND unbounded following) AS c_mavg
FROM etl_exdw_log
ORDER BY unit_id, unit_code, tjrq_q, out_row

/*—————————————

** rows unbounded preceding|current row|value_expr preceding

—————————————–*/
–rows unbounded PRECEDING
–等同于rows BETWEEN unbounded PRECEDING AND current row
SELECT unit_id,
unit_code,
tjrq_q,
out_row,
AVG(out_row) OVER(PARTITION BY unit_id, tjrq_q ORDER BY tjrq_q rows unbounded PRECEDING) AS c_mavg
FROM etl_exdw_log
ORDER BY unit_id, unit_code, tjrq_q, out_row

–rows 1 preceding
–当前行,和前一行做分析
–rows current row
–不做分析,和原值相同
SELECT unit_id,
unit_code,
tjrq_q,
out_row,
AVG(out_row) OVER(PARTITION BY unit_id, tjrq_q ORDER BY tjrq_q rows 1 preceding) AS c_mavg
FROM etl_exdw_log
ORDER BY unit_id, unit_code, tjrq_q, out_row

oracle分析函数:一、窗口子句的使用相关推荐

  1. oracle分析函数以及窗口,Oracle分析函数与窗口函数

    一.默认窗口与排名函数 最常用的分析函数是排名函数,用于返回当前记录在窗口中的位置.常用的排名函数包括rank().dense_rank().row_number()等.排名函数所对应的窗口函数必须指 ...

  2. Oracle分析函数入门

    分析函数是什么? 分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计值. 分析函数和聚合函数的不 ...

  3. oracle 四分位函数,Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…

    Oracle 分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内 ...

  4. oracle 数据分析函数,ORACLE分析函数(一)

    ORACLE分析函数(1) 分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同.聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和 ...

  5. Oracle分析函数巧妙使用

    在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...

  6. Oracle分析函数——函数列表

    --------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...

  7. oracle 分析函数、GROUPING函数

    分析函数 over(Partition by...) 一个超级牛皮的ORACLE特有函数.天天都用ORACLE,用了快2年了.最近才接触到这个功能强大而灵活的函数.真实惭愧啊!oracle的分析函数o ...

  8. Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…

    Oracle分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据ORDER BY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内的数据 ...

  9. oracle regr,oracle 分析函数

    一.Oracle分析函数入门 分析函数是什么? 分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统 ...

  10. Oracle分析函数一——函数列表

    Oracle 分析函数 Oracle 分析函数--函数列表 SUM         : 该函数计算组中表达式的累积和 MIN         : 在一个组中的数据窗口中查找表达式的最小值 MAX    ...

最新文章

  1. grpc在java中使用
  2. pytorch手动实现梯度下降法,随机梯度法--基于logistic Regression并探索Mini batch作用
  3. SAP Spartacus UnitDetailsComponent对应的UI插入,是在路由框架里完成的
  4. linux更改甜器名称,Linux添加swap分区
  5. django框架 day09
  6. Anaconda3+PyTorch安装教程
  7. 3 上传分段_陕西|杨凌职业技术学院3+2分段制高职招生啦!
  8. Fedora 31 及以后版本将不再支持 32 位内核已实锤
  9. kali 安装grub theme
  10. html树形结构_数据结构-线性表.md
  11. 小白记事本--学不明白还怕忘记指针--loading未完待续
  12. 时区时钟插件html,日期、时间选择控件 - datetimepicker
  13. 英特尔hd630驱动_英特尔Iris HD Graphics显卡驱动64位_ intel驱动-PChome下载中心
  14. Excel 2010 SQL应用048 比较两列数据是否相同
  15. 【安全知识分享】工程项目夏季、雨季、夜间、防汛施工安全培训教育(附下载)
  16. C语言之strrchr函数
  17. 前端路线--H5篇(day04)
  18. pytorch神经网络实现
  19. gihub上传本地项目简单步骤
  20. 关于WIN10“网络重置”后连不上网的解决方法

热门文章

  1. 强化学习汇总 - Mofan教程
  2. python最佳实践指南试题_8.1. 关于这份指南
  3. 梯度下降参数不收敛_一文讲透梯度下降
  4. 使用jnative调用c语言动态库对接华视电子身份证阅读机
  5. 20210203_flink学习笔记
  6. P-1.4.1 尝试实现OW的自动瞄准
  7. STM32F407-高级定时器PWM输出功能
  8. 2022FALL嵌入式大纲
  9. android progressbar 循环,Android ProgressBar消失
  10. 算法训练 加法运算(你的表妹正在学习整数的加法,请编写一个程序来帮助她学习。该程序调用了一个函数GetTwoInts,由它来返回两个从键盘读入的100以内的整数,然后计算这两个整数之和,并把答案显示)