MySQL中LAG()函数和LEAD()函数的使用


Posted in MySQL onAugust 14, 2022

一、窗口函数的基本用法

从MySQL8之后才开始支持窗口函数

<窗口函数> OVER ([PARTITION BY <用于分组的列>] ORDER BY <用于排序的列>)

二、LAG()和LEAD()函数介绍

  • lag和lead分别是向前向后的意思
  • 参数有三个。expression:列名;offset:偏移量;default_value:超出记录窗口的默认值(默认为null,可以设置为0)

三、数据准备(建表sql在最后)

MySQL中LAG()函数和LEAD()函数的使用

1、LAG()函数:统计与前一天相比温度更高的日期Id

我们先按照日期进行排序,然后找到当天比前一天温度高的id;使用lag()函数,将温度向后推一天。

select id, date, temperature, LAG(temperature, 1, 0) OVER (order by date) as temp FROM weather

查询结果:

MySQL中LAG()函数和LEAD()函数的使用

然后将temperature大于temp 并且temp不等于0的数据挑选出来

select id from (select id, date, temperature, LAG(temperature, 1, 0) OVER (order by date) as temp FROM weather) tmp where temperature>temp and temp != 0;

结果如下:

MySQL中LAG()函数和LEAD()函数的使用

2、LEAD()函数:统计与后一天相比温度更高的日期Id

我们还是先按照日期进行排序,然后找到当天比后一天温度高的id;使用lead()函数,将温度向后推一天。

select id, date, temperature, LEAD(temperature, 1, 0) OVER (order by date) as temp FROM weather

查询结果:

MySQL中LAG()函数和LEAD()函数的使用

然后将temperature大于temp 并且temp不等于0的数据挑选出来

select id from (select id, date, temperature, LEAD(temperature, 1, 0) OVER (order by date) as temp FROM weather) tmp where temperature>temp and temp != 0;

查询结果:

MySQL中LAG()函数和LEAD()函数的使用

四、建表数据sql

DROP TABLE IF EXISTS `weather`;
CREATE TABLE `weather`  (
  `id` int(11) NOT NULL,
  `date` date NULL DEFAULT NULL,
  `temperature` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of weather
-- ----------------------------
INSERT INTO `weather` VALUES (1, '2022-08-01', 20);
INSERT INTO `weather` VALUES (2, '2022-08-02', 25);
INSERT INTO `weather` VALUES (3, '2022-08-03', 22);
INSERT INTO `weather` VALUES (4, '2022-08-04', 22);
INSERT INTO `weather` VALUES (5, '2022-08-05', 26);
INSERT INTO `weather` VALUES (6, '2022-08-06', 28);
INSERT INTO `weather` VALUES (7, '2022-08-07', 20);

SET FOREIGN_KEY_CHECKS = 1;

到此这篇关于MySQL中LAG()函数和LEAD()函数的使用的文章就介绍到这了,更多相关mysql LAG()和LEAD()函数内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
mysql查询的控制语句图文详解
Apr 11 MySQL
MySQL kill不掉线程的原因
May 07 MySQL
mysql对于模糊查询like的一些汇总
May 09 MySQL
为什么mysql字段要使用NOT NULL
May 13 MySQL
MySQL中出现乱码问题的终极解决宝典
May 26 MySQL
MySQL单表千万级数据处理的思路分享
Jun 05 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
Jun 26 MySQL
Mysql事务索引知识汇总
Mar 17 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 #MySQL
MySQL数据库查询之多表查询总结
Aug 05 #MySQL
分享很少见很有用的SQL功能CORRESPONDING
Aug 05 #MySQL
MySQL存储过程及语法详解
Aug 05 #MySQL
MySQL自定义函数及触发器
Aug 05 #MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 #MySQL
Mysql中mvcc各场景理解应用
Aug 05 #MySQL
You might like
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
2016/06/12 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
2016/12/21 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
python使用scrapy解析js示例
2014/01/23 Python
python中matplotlib的颜色及线条控制的示例
2018/03/16 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
在pandas中遍历DataFrame行的实现方法
2019/10/23 Python
Python爬虫解析网页的4种方式实例及原理解析
2019/12/30 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
毕业自荐书
2013/12/09 职场文书
小学师德标兵先进事迹材料
2014/05/25 职场文书
物业消防安全责任书
2014/07/23 职场文书
2014年新教师工作总结
2014/11/08 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
2015年世界无烟日活动总结
2015/02/10 职场文书
签约仪式致辞
2015/07/30 职场文书
高一英语教学反思
2016/03/03 职场文书
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技