工作中可能会对同一字段相邻两条数据进行运算,这时候就可以用到偏移函数(Oracle、Hive、MySQL8+通用)

这里用MySQL8+进行演示,准备MySQL数据:

DROP TABLE IF EXISTS `test_offset`;
CREATE TABLE `test_offset`  (`test_name` varchar(255),`test_money` int,`test_date` date
);
INSERT INTO `test_offset` VALUES ('张三', 10, '2022-09-30');
INSERT INTO `test_offset` VALUES ('张三', 50, '2022-10-01');
INSERT INTO `test_offset` VALUES ('张三', 40, '2022-10-02');
INSERT INTO `test_offset` VALUES ('张三', 100, '2022-10-03');
INSERT INTO `test_offset` VALUES ('李四', 120, '2022-09-30');
INSERT INTO `test_offset` VALUES ('李四', 99, '2022-10-01');
INSERT INTO `test_offset` VALUES ('李四', 110, '2022-10-02');
INSERT INTO `test_offset` VALUES ('李四', 38, '2022-10-03');

现准备两组数据,记录了张三和李四,四天的资金状况,求每天相对于昨天是增加了还是减少了

源数据如下:

实现SQL:以test_name分组,test_date正序排序,向上偏移一行数据

SELECT       test_name,test_date,test_money,lag(test_money,1,0) over(partition by test_name order by test_date) yesterday_money,test_money - lag(test_money,1,0) over(partition by test_name order by test_date) diff_money
FROM        test_offset

效果如下:

偏移函数解析:lag和lead用法一样

lag(col,n,default):用于统计分组内往上第n行值。

第一个参数为列名
第二个参数为往上第n行(可选,不填默认为1)
第三个参数为默认值(当往上第n行为NULL时候,取默认值,如不指定,则为NULL)

lead(col,n,default):与lag相反,统计分组内往下第n行值。

第一个参数为列名
第二个参数为往下第n行(可选,不填默认为1)
第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)

注:如果中间有一天缺数据,可能会达不到自己想要的结果

Oracle MySQL Hive sql进行相邻数据相减、相加等运算 lad lead 窗口函数 偏移函数相关推荐

  1. Oracle MySQL Hive sql判断字符串中包含某个字符的个数

    用length函数求出字符串长度,再对源数据中某个字符去掉求字符串长度,两个长度相减,得出包含某个字符的个数 MySQL所有版本: select length('2022-11-16') - leng ...

  2. mysql oracle mvcc_PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式

    PostgreSQL.Oracle/MySQL和SQL Server的MVCC实现原理方式 关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控 ...

  3. oracle与mysql执行sql原理_PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式

    PostgreSQL.Oracle/MySQL和SQL Server的MVCC实现原理方式 关系数据库管理系统使用MVCC(Multiversion Concurrency Control多版本并发控 ...

  4. MySQL 到 SQL Server 实时数据同步实操分享

    摘要:很多 DBA 和开发同学经常会遇到要从一个数据库实时同步到另一个数据库的问题,同构数据还相对容易,遇上异构数据.表多.数据量大等情况就难以同步.最近了解到一款实时数据同步工具 Tapdata C ...

  5. RDBMS之SQL:SQL语言的各种方言的简介(MySQL/Hive SQL/PQL/OracleSQL/SQLite影响力排序)、主流语言的对比之详细攻略

    RDBMS之SQL:SQL语言的各种方言的简介(MySQL/Hive SQL/PQL/OracleSQL/SQLite影响力排序).主流语言的对比之详细攻略 目录 SQL语言的各种方言的简介 1.My ...

  6. 使用SQL 计算一组数据的峰度、偏度 公式依据excel的KURT函数和SKEW函数 Oracle 数据库

    使用SQL 计算一组数据的峰度.偏度 公式依据excel的KURT函数和SKEW函数 因为工作原因,要把excel的KURT和SKEW函数在Oracle实现出来并统计,在网上找了半天没有答案..只能自 ...

  7. mysql实现两列数据或者两行数据相减

    注意:两行数据相减必须先转子查询,转为两列后,才能进行相减 select (n.a-n.b) as c from (select (SELECT settlement_amount FROM `dom ...

  8. hive sql 向上取整、向下取整、保留小数位的函数

    hive sql 向上取整.向下取整.保留小数位的函数 向上取整函数:ceiling() 示例:select ceiling(10.1) 结果:11 向下取整函数:floor() 示例:select ...

  9. pandas操作两列日期类型数据相减并要求结果为整数类型

    在 pandas 中,两列日期类型数据相减可以使用减法运算符,结果会得到一个 Timedelta 类型.如果要求结果为整数类型,可以使用其 dt 属性中的 total_seconds 方法,来获取时间 ...

最新文章

  1. linux下安装部署ansible
  2. android头部固定悬停,Android开发上滑悬停且头部可刷新
  3. myBatis xml if、where、if-else?、foreach 心得
  4. 证明是一个偶像,数学家在这个偶像前折磨自己!
  5. 消息称ARM CEO已辞职 与660亿美元卖身NVIDIA失败无关
  6. android打开sqlite数据库,Android:打开和关闭SQLite数据库
  7. css优雅降级和渐进增强
  8. dumpe2fs命令详解
  9. boa 调用 cgi 读取文件_PHP7的内核CGI与FastCGI,你懂多少?
  10. 八、JVM视角浅理解并发和锁
  11. 揭秘百万人围观的Facebook视频直播
  12. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_4_综合案例_文件上传案例阻塞问题...
  13. 分享180个动态模板PPT模板,总有一款适合你
  14. Idea编写简单Java网络爬虫程序(maven)
  15. 完美屏蔽中国移动,四川手机报发的信息。
  16. 海鸣威《离开为了更好的回来》 MV首播感心动耳
  17. 【Vue】ElementUI、ECharts使用 cdn引入
  18. web学生网页设计作业源码 HTML5+CSS大作业——三八女人节主题设计(1页)
  19. 2021中国开源码力榜启动,寻找开源世界的超级玛丽
  20. 定理在数学中的简写形式_初一数学:定义、定理、公式、方法

热门文章

  1. HDFS机架感知功能原理(rack awareness)
  2. 软件开发V模型--解读
  3. java B2B2C Springcloud电子商务平台源码------Hystrix的缓存使用
  4. 骑行中央公园,探索纽约“后花园”别样的美
  5. 熱銷商品查詢php,ecshop首页调用指定商品分类下推荐热销最新商品
  6. 如何快速解决Unity中万向节死锁(gimbal lock)的问题
  7. 最新(2014-09-22)中国IT互联网公司市值排名(单位:亿美元)
  8. Apache HBase MTTR 优化实践:减少恢复时长
  9. Matlab应变片仿真,大物仿真实验报告 - 副本
  10. 2022-2028年中国健康险行业市场发展现状及竞争格局预测报告