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 05 MySQL
mysql的MVCC多版本并发控制的实现
Apr 14 MySQL
MySQL 数据丢失排查案例
May 08 MySQL
MySQL 使用自定义变量进行查询优化
May 14 MySQL
Navicat for MySQL的使用教程详解
May 27 MySQL
MySQL CHAR和VARCHAR该如何选择
May 31 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
MySQL中CURRENT_TIMESTAMP的使用方式
Nov 27 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 MySQL
浅谈MySql update会锁定哪些范围的数据
Jun 25 MySQL
mysql拆分字符串作为查询条件的示例代码
Jul 07 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
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
php单一接口的实现方法
2015/06/20 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
验证手机号码的JS方法分享
2013/09/10 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
Position属性之relative用法
2015/12/14 Javascript
vue的全局提示框组件实例代码
2018/02/26 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
Python爬虫实现“盗取”微信好友信息的方法分析
2019/09/16 Python
Python爬取微信小程序通用方法代码实例详解
2020/09/29 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
TripAdvisor瑞典:全球领先的旅游网站
2017/12/11 全球购物
小学教师师德感言
2014/02/10 职场文书
党员组织关系介绍信
2014/02/13 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
公务员保密工作承诺书
2015/05/04 职场文书
教师病假条范文
2015/08/17 职场文书