Oracle的分析函数over()
问题:各市随即抽样5000条数据
聚合函数用group by分组,每个分组返回一个统计值。但不能对每行进行分析,得不到问题的结果。而分析函数采用partition by分组,并且每组每行都可以返回一个统计值。辅助row_number()函数和生成随机数函数,取rownum<=5000的数据。
select *
from (select ROW_NUMBER() over(partition by 市代码 order by RAND()) row_num ,t1.*from 表 as t1 ) t2
where row_num <= 5000 ;
分析函数带有一个开窗函数over(),包含三个分析子句:
分组(partition by)
排序(order by)
窗口(rows)
前两个较为常见,第三个表示分析函数的作用范围,默认范围是组内所有记录。
相当于
SUM(SAL) OVER(PARTITION BY E.DEPTNO ORDER BY E.SALROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
其它表示范围的写法还有:
第一行至当前行:
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
当前行至最后一行:
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
当前行的上一行(rownum-1)到当前行:
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
当前行的上一行(rownum-1)到当前行的下辆行(rownum+2):
ROWS BETWEEN 1 PRECEDING AND 2 FOLLOWING
———————————————————————————————————————
rows 和 range的区别:
以计算工资总和为例
rows
sum(salary)over(partition by dept order by user_id rows between current row and 2 following ) as sum_salary
sum_salary值则为当前行到下面两行的salary累加值
range
sum(salary)over(partition by dept order by user_id range between current row and 500 following ) as sum_salary
sum_salary值则为当前行到之后比当前行salary值最大大500以内的累加值
Oracle的分析函数over()相关推荐
- Oracle所有分析函数转
Oracle所有分析函数<转> Oracle分析函数--函数列表 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 M ...
- 超级牛皮的oracle的分析函数over(Partition by...) 及开窗函数
http://zonghl8006.blog.163.com/blog/static/4528311520083995931317/ over(Partition by...) 一个超级牛皮的ORAC ...
- oracle删除重复字段数据库,用Oracle的分析函数删除重复的数据,
用Oracle的分析函数删除重复的数据, 用Oracle的分析函数删除重复的数据 没有主键(Primary Key)约束保护的表格可能会让重复的数据行被插入进来.查找这种重复数据的传统方式是通过GRO ...
- 用Oracle的分析函数删除重复的表格
用Oracle的分析函数删除重复的表格 作者: Bob Watkins 没有主键(Primary Key)约束保护的表格可能会让重复的数据行被插入进来.查找这种重复数据的传统方式是通过GROUP BY ...
- oracle 数据分析函数,ORACLE分析函数(一)
ORACLE分析函数(1) 分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同.聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和 ...
- oracle之分析函数over及开窗函数
2019独角兽企业重金招聘Python工程师标准>>> 一:分析函数overOracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于 ...
- oracle函数分为几个大类,ORACLE常见分析函数有哪几类呢?
而ORACLE的常见分析函数有三类: 1. OVER函数 分析函数的语法为: Java代码 FUNCTION_NAME(,...) OVER () 例: sum(sal) over (partitio ...
- oracle的集函数,Oracle统计分析函数集之一(转载)
分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返 ...
- 分组函数group by和Oracle中分析函数partition by的用法以及区别
今天有个同事给我打电话问我题目列出的这个问题,在日常开发中,确实它们俩都是与分组有关的,但是需要注意的是一个是分组函数另一个是分析函数,讲解用到的表就以Oracle中schema的scott的EMP表 ...
- oracle 进入gdsctl,oracle的分析函数over 及开窗函数[转]
一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返回一行. 下面通过几个例子来说 ...
最新文章
- php网页弹出图片,商城网站是如何单击头像直接弹出可以上传图片然后预览?
- 技巧/诀窍:在ASP.NET中重写URL
- 计算机网络实验仿真系统设计,计算机网络实验课程仿真系统平台的研究与设计...
- Android 如何将Canvas上绘制的内容保存成本地图片
- JS-获取当前日期-月的天数
- java --replaceAll方法
- Red Hat Enterprise 5 server 上安装 memcached 的问题记录
- 前端学习(2151):webpack之使用vue
- Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包
- django 部署_狂野的Django:部署生存的技巧
- redis使用lua脚本
- uploadify 初始化的时候会请求当前页面地址
- CSS网页切图实例教程上
- CRM客户关系管理系统项目总结
- IDC将中国城市分成六级:每一级具体的城市是那几个市,谢谢回复
- 大三学生HTML期末作业,网页制作作业——HTML+CSS+JavaScript饮品饮料茶(7页)
- 投资学U18 股票估值 课后习题解读
- 百菜不如白菜 娃娃菜更营养吗
- android r AB ota fail
- spring cloud gateway nacos搭建动态路由
热门文章
- 《深入浅出数据分析》读后详解
- matlab与maple互联,编程语言与Maple联合使用教程
- java taglib开发_Java WEB开发实战 之 第六部分:Taglib基本知识和基本开发【私塾在线原创】...
- windows黑客编程系列(一):运行单一实例
- 大学计算机操作Windows7实验报告,实验报告 计算机操作系统-Windows 7
- 安装USB--RS232驱动,提示设备无法启动,解决方法
- 6个常用的Python编程开发工具
- win10的 程序员计算器
- 清华大学计算机系网络课程视屏,清华大学计算机系网络课程
- Linux 脚本获取当前路径父路径及常用命令