Oracle 分析函数案例
-- Start
假设现在我们有下面的表用来存放交易记录,现在我们要做一个报表,查询一下每相邻两次交易记录的 amount 的差值,也就是第二条记录的 amount 减去第一条的 amount,第三条减去第二条。
CREATE TABLE history
(trade_id NUMBER(10, 0),trade_date_time TIMESTAMP,amount NUMBER(10, 2)
);
该怎么办呢?我们有几种办法。第一种办法是查询出所有的记录,然后在 Java 里进行运算。第二种是使用函数通过游标来进行运算。那有没有一种办法一个 SQL 就搞定了呢?不能吧?怎么可能呢?试一试下面的 SQL 吧。
SELECT trade_id, trade_date_time, amount - NVL(LAG(amount) OVER(PARTITION BY trade_id ORDER BY trade_date_time), 0)
FROM history;
什么?没看懂?首先学学什么是 Oracle 分析函数吧。
-- 更多参见:Oracle SQL 精萃
-- 声明:转载请注明出处
-- Last Edited on 2015-02-14
-- Created by ShangBo on 2015-02-14
-- End
Oracle 分析函数案例相关推荐
- Oracle分析函数——函数列表
--------------聚合函数 SUM :该函数计算组中表达式的累积和 MIN :在一个组中的数据窗口中查找表达式的最小值 MAX :在一个组中的数据窗口中查找表达式的最大值 AVG :用于计算 ...
- Oracle分析函数六——数据分布函数及报表函数
Oracle分析函数--数据分布函数及报表函数 CUME_DIST 功能描述:计算一行在组中的相对位置,CUME_DIST总是返回大于0.小于或等于1的数,该数表示该行在N行中的位置.例如,在一个3行 ...
- Oracle分析函数大全
分析函数又叫开窗函数,OLAP函数等,因为有人问我用过开窗函数没,呵,什么是开窗函数,从来没听过,难道是分析函数么.哈哈,最后还真是分析函数哦!用过的东西别名也应该知道,赶上这么个事,就剽窃一眼Ora ...
- Oracle quartile函数,Oracle分析函数六——数据分布函数及报表函数
Oracle 分析函数--数据分布函数及报表 函数CUME_DIST功能描述:计算一行在组中的相对位置, CUME_DIST 总是返回大于 0 .小于或等于 1 的数,该数表示该行在 N 行中的位置. ...
- Oracle分析函数五——统计分析函数
Oracle 分析函数--统计分析函数 方差和标准差: 样本中各数据与样本平均数的差的平方和的平均数叫做样本方差:样本方差的算术平方根叫做样本标准差.样本方差和样本标准差都是衡量一个样本波动大 ...
- oracle 四分位函数,Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
Oracle 分析函数--函数RANK,DENSE_RANK,FIRST,LAST- RANK 功能描述:根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置.组内 ...
- 【分析函数】Oracle分析函数之LAG和LEAD
[分析函数]Oracle分析函数之LAG和LEAD Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值.这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的 ...
- oracle 数据分析函数,ORACLE分析函数(一)
ORACLE分析函数(1) 分析函数式ORACLE提供的用来进行数据统计的强有力工具,与我们常用的聚合函数具有一些相似性,但又完全不同.聚合函数,首先会将数据进行分组,然后对每一组数据进行运算,如求和 ...
- Oracle分析函数巧妙使用
在 Oracle中使用Sql必须弄懂分析函数 Oracle开发专题之:分析函数(OVER) 1 Oracle开发专题之:分析函数2(Rank, Dense_rank, row_number) 6 Or ...
最新文章
- 图解Skip List——本质是空间换时间的数据结构,在lucene的倒排列表,bigtable,hbase,cassandra的memtable,redis中sorted set中均用到...
- #102030:在30天内运行20 10K,庆祝Java 20年
- RegExp:正则表达式对象
- java steam 去重_Java中对List去重 Stream去重的解决方法
- 06-在IDEA中实战Git
- Linux 0.11内核分析03:系统调用
- LeetCode(500)——键盘行(JavaScript)
- HP/Aruba 2620系列交换机DHCP中继配置方法
- 快速删除大文件 多级目录 同步并删除 rsync
- Leetcode之整数转罗马数字
- Chrome 87 发布,获多年来最大性能提升
- OpenDDS应用开发步骤
- 黑苹果macOS Catalina 10.15.4 安装过程详细记录
- 架构师之路--康奈尔笔记法
- 大话伊辛模型之一:源起
- 从turtlesim到贪吃蛇……(补充)
- 微信平台自动获取Token
- python:select interpreter resulted in an error python.setINterpreter not found
- Android系统状态栏的信号图标显示流程简介
- 线性代数Python计算:向量的模及向量间的夹角