oracle统计每个类别,Oracle统计分析函数集之一
分析函数over 及开窗函数
一:分析函数over
Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是
对于每个组返回多行,而聚合函数对于每个组只返回一行。
下面通过几个例子来说明其应用。
1:统计某商店的营业额。
date sale
1 20
2 15
3 14
4 18
5 30
规则:按天统计:每天都统计前面几天的总额
得到的结果:
DATE SALE SUM
----- -------- ------
1 20 20 --1天
2 15 35 --1天+2天
3 14 49 --1天+2天+3天
4 18 67 .
5 30 97 .
2:统计各班成绩第一名的同学信息
NAME CLASS S
----- ----- ----------------------
fda 1 80
ffd 1 78
dss 1 95
cfe 2 74
gds 2 92
gf 3 99
ddd 3 99
adf 3 45
asdf 3 55
3dd 3 78
通过:
--
select * from
(
select name,class,s,rank()over(partition by class order by s desc) mm from t2
)
where mm=1
--
得到结果:
NAME CLASS S MM
----- ----- ---------------------- ----------------------
dss 1 95 1
gds 2 92 1
gf 3 99 1
ddd 3 99 1
注意:
1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果
2.rank()和dense_rank()的区别是:
--rank()是跳跃排序,有两个第二名时接下来就是第四名
--dense_rank()l是连续排序,有两个第二名时仍然跟着第三名
3.分类统计 (并显示信息)
A B C
-- -- ----------------------
m a 2
n a 3
m a 2
n b 2
n b 1
x b 3
x b 2
x b 4
h b 3
select a,c,sum(c)over(partition by a) from t2
得到结果:
A B C SUM(C)OVER(PARTITIONBYA)
-- -- ------- ------------------------
h b 3 3
m a 2 4
m a 2 4
n a 3 6
n b 2 6
n b 1 6
x b 3 9
x b 2 9
x b 4 9
如果用sum,group by 则只能得到
A SUM(C)
-- ----------------------
h 3
m 4
n 6
x 9
无法得到B列值
=====
二:开窗函数
开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:
1:
over(order by salary) 按照salary排序进行累计,order by是个默认的开窗函数
over(partition by deptno)按照部门分区
2:
over(order by salary range between 5 preceding and 5 following)
每行对应的数据窗口是之前行幅度值不超过5,之后行幅度值不超过5
例如:对于以下列
aa
1
2
2
2
3
4
5
6
7
9
sum(aa)over(order by aa range between 2 preceding and 2 following)
得出的结果是
AA SUM
---------------------- -------------------------------------------------------
1 10
2 14
2 14
2 14
3 18
4 18
5 22
6 18
7 22
9 9
就是说,对于aa=5的一行 ,sum为 5-1<=aa<=5+2 的和
对于aa=2来说 ,sum=1+2+2+2+3+4=14 ;
又如 对于aa=9 ,9-1<=aa<=9+2 只有9一个数,所以sum=9 ;
3:其它:
over(order by salary rows between 2 preceding and 4 following)
每行对应的数据窗口是之前2行,之后4行
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)
oracle统计每个类别,Oracle统计分析函数集之一相关推荐
- oracle的集函数,Oracle统计分析函数集之一(转载)
分析函数over 及开窗函数 一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返 ...
- oracle 月累计,oracle 可有什么方法 统计每月累积购买人数?
oracle 可有什么方法 统计每月累积购买人数? oracle 可有什么方法 统计每月累积购买人数 比如说有个门店 2008年购买商品的人数 表:t_buy_log 字段 f_username 用 ...
- oracle stalestats_深入理解oracle优化器统计数据(Optimizer Statistics)
理解oracle优化器统计数据 首先来介绍oracle数据库使用基于规则优化器(RBO)来决定如何执行一个sql语句.基于规则优化器顾名思义,它是遵循一组规则来判断一个sql语句的执行计划.这组规则是 ...
- oracle数据库直方图,[转] oracle统计信息(statistics)和直方图(histogram)
oracle统计信息和直方图的理解 以前一直对统计信息的理解就是对行的数据分布的,提供改CBO来选择高效的执行计划.这段时间看了不少资料,对统计有了一个更清晰的认识 统计信息: 1,表中的统计信息 2 ...
- Oracle 12c数据库优化器统计信息收集的最佳实践
Oracle 12c数据库优化器统计信息收集的最佳实践 转载自 沃趣科技(ID:woqutech) 作者 刘金龙(译) 原文链接 http://www.oracle.com ...
- oracle并行收集统计信息慢,Oracle 学习之性能优化(四)收集统计信息
emp表有如下数据.SQL> select ename,deptno from emp; ENAME DEPTNO ------------------------------ ------ ...
- oracle不连续得时间如何分组,Oracle按不同时间分组统计的sql
Oracle按不同时间分组统计的sql以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Oracle按不同时间分组统计的s ...
- oracle按用户采集信息,oracle 11g 手动收集用户统计信息
oracle 11g 手动收集用户统计信息 2020-07-25 编程之家收集整理的这篇文章主要介绍了oracle 11g 手动收集用户统计信息,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个 ...
- oracle中有没有=,在oracle中有没有方式来实现这样的统计啊?
在oracle中有没有方式来实现这样的统计? 有这样的三张表,记录表(id,compid 单位编号,happentime 发生时间,protypeid 问题类型),问题类型表(proid,--),单 ...
最新文章
- 汪潮涌:AI创业落地为王,技术和算法难以成为核心壁垒
- + ,- (加号,减号) 是数字类型吗?(sql server 2000中)
- 通知:Spring Cloud Alibaba 仓库迁移
- 工业计算机断层扫描原理,工业计算机断层扫描(CT).doc
- 【推荐一位Python大佬】 从程序员到创业者,再到自由职业
- Python学习:numpy点乘,按元素相乘,以及转置的处理
- 分布式锁实现原理与最佳实践
- 董老师又双叒叕送书啦,8本《Python网络程序设计(微课版)》
- struts学习笔记(一):Struts相关基础理论介绍
- c# 条件编译 Conditional (DEBUG)
- 区块链技术从入门到精通教程
- Base64对图片进行编码解码
- Pytorch:三、数据的迭代训练(猫狗)
- 【重识云原生】第六章容器6.3.5节——Controller Manager概述
- 【电商项目实战】个人资料(详细篇)
- 唯样商城:扩展用于汽车以太网的 ESD 保护解决方案产品组合
- 2022考研写作不过如此pdf电子版
- webmatrix(WebMatrix升级)
- 微型计算机原理push指令,微机原理指令英文解释
- 阿里巴巴升级生意参谋 大数据为电商赋能
热门文章
- 简单分享apache封IP的方法
- Spark 广播变量和累加器
- JavaScript笔记杂谈篇(啥都有)
- 《计算机网络基础》考试大纲
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.4.MVC的主要工具-使用Moq
- 手动绘制DataTable
- Failed to restart docker.service: Unit is masked.真正的解决办法
- 2018修复激活闪退_IOS越狱后和平精英闪退、黑屏、10min封号的解决办法!
- 设备驱动模型与sysfs
- IP与子网掩码的计算