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 相关文章推荐
浅析InnoDB索引结构
Apr 05 MySQL
jdbc使用PreparedStatement批量插入数据的方法
Apr 27 MySQL
详解MySQL的Seconds_Behind_Master
May 18 MySQL
MySQL8.0.18配置多主一从
Jun 21 MySQL
mysql联合索引的使用规则
Jun 23 MySQL
MySQL如何解决幻读问题
Aug 07 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 MySQL
关于MySQL临时表为什么可以重名的问题
Mar 22 MySQL
MySQL数据库Innodb 引擎实现mvcc锁
May 06 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 MySQL
MySql按时,天,周,月进行数据统计
Aug 14 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
织梦sitemap地图实时推送给百度的教程
2015/08/03 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
javascript 密码框防止用户粘贴和复制的实现代码
2014/02/17 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
关于JS与jQuery中的文档加载问题
2017/08/22 jQuery
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
跟老齐学Python之集合(set)
2014/09/24 Python
分析Python编程时利用wxPython来支持多线程的方法
2015/04/07 Python
Python每天必学之bytes字节
2016/01/28 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
Python GUI库PyQt5样式QSS子控件介绍
2020/02/25 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
python exit出错原因整理
2020/08/31 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
学生期末评语大全
2014/04/30 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
婚礼男方父母答谢词
2015/09/29 职场文书
大学生党课心得体会
2016/01/07 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
对Keras自带Loss Function的深入研究
2021/05/25 Python