问题:各市随即抽样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()相关推荐

  1. Oracle所有分析函数转

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

  2. 超级牛皮的oracle的分析函数over(Partition by...) 及开窗函数

    http://zonghl8006.blog.163.com/blog/static/4528311520083995931317/ over(Partition by...) 一个超级牛皮的ORAC ...

  3. oracle删除重复字段数据库,用Oracle的分析函数删除重复的数据,

    用Oracle的分析函数删除重复的数据, 用Oracle的分析函数删除重复的数据 没有主键(Primary Key)约束保护的表格可能会让重复的数据行被插入进来.查找这种重复数据的传统方式是通过GRO ...

  4. 用Oracle的分析函数删除重复的表格

    用Oracle的分析函数删除重复的表格 作者: Bob Watkins 没有主键(Primary Key)约束保护的表格可能会让重复的数据行被插入进来.查找这种重复数据的传统方式是通过GROUP BY ...

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

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

  6. oracle之分析函数over及开窗函数

    2019独角兽企业重金招聘Python工程师标准>>> 一:分析函数overOracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是对于 ...

  7. oracle函数分为几个大类,ORACLE常见分析函数有哪几类呢?

    而ORACLE的常见分析函数有三类: 1. OVER函数 分析函数的语法为: Java代码 FUNCTION_NAME(,...) OVER () 例: sum(sal) over (partitio ...

  8. oracle的集函数,Oracle统计分析函数集之一(转载)

    分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返 ...

  9. 分组函数group by和Oracle中分析函数partition by的用法以及区别

    今天有个同事给我打电话问我题目列出的这个问题,在日常开发中,确实它们俩都是与分组有关的,但是需要注意的是一个是分组函数另一个是分析函数,讲解用到的表就以Oracle中schema的scott的EMP表 ...

  10. oracle 进入gdsctl,oracle的分析函数over 及开窗函数[转]

    一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返回一行. 下面通过几个例子来说 ...

最新文章

  1. php网页弹出图片,商城网站是如何单击头像直接弹出可以上传图片然后预览?
  2. 技巧/诀窍:在ASP.NET中重写URL
  3. 计算机网络实验仿真系统设计,计算机网络实验课程仿真系统平台的研究与设计...
  4. Android 如何将Canvas上绘制的内容保存成本地图片
  5. JS-获取当前日期-月的天数
  6. java --replaceAll方法
  7. Red Hat Enterprise 5 server 上安装 memcached 的问题记录
  8. 前端学习(2151):webpack之使用vue
  9. Linux(Ubuntu)下设置开机自启shell脚本执行Java程序jar包
  10. django 部署_狂野的Django:部署生存的技巧
  11. redis使用lua脚本
  12. uploadify 初始化的时候会请求当前页面地址
  13. CSS网页切图实例教程上
  14. CRM客户关系管理系统项目总结
  15. IDC将中国城市分成六级:每一级具体的城市是那几个市,谢谢回复
  16. 大三学生HTML期末作业,网页制作作业——HTML+CSS+JavaScript饮品饮料茶(7页)
  17. 投资学U18 股票估值 课后习题解读
  18. 百菜不如白菜 娃娃菜更营养吗
  19. android r AB ota fail
  20. spring cloud gateway nacos搭建动态路由

热门文章

  1. 《深入浅出数据分析》读后详解
  2. matlab与maple互联,编程语言与Maple联合使用教程
  3. java taglib开发_Java WEB开发实战 之 第六部分:Taglib基本知识和基本开发【私塾在线原创】...
  4. windows黑客编程系列(一):运行单一实例
  5. 大学计算机操作Windows7实验报告,实验报告 计算机操作系统-Windows 7
  6. 安装USB--RS232驱动,提示设备无法启动,解决方法
  7. 6个常用的Python编程开发工具
  8. win10的 程序员计算器
  9. 清华大学计算机系网络课程视屏,清华大学计算机系网络课程
  10. Linux 脚本获取当前路径父路径及常用命令