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 22 MySQL
浅谈mysql返回Boolean类型的几种情况
Jun 04 MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 MySQL
SQL优化老出错,那是你没弄明白MySQL解释计划用法
Nov 27 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
解决MySQL添加新用户-ERROR 1045 (28000)的问题
Mar 03 MySQL
MySQL派生表联表查询实战过程
Mar 20 MySQL
MySQL分区表管理命令汇总
Mar 21 MySQL
MySQL Server层四个日志的实现
Mar 31 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
Mysql中常用的join连接方式
May 11 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 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使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
用户注册常用javascript代码
2009/08/29 Javascript
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
Vue动态组件实例解析
2017/08/20 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python修改操作系统时间的方法
2015/05/18 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
Python实现性能自动化测试竟然如此简单
2019/07/30 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
自荐信模版
2013/10/24 职场文书
师范生的个人求职信范文
2014/01/04 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
高三政治教学反思
2014/02/06 职场文书
12.4全国法制宣传日活动总结
2014/11/01 职场文书
质检员工作总结2015
2015/04/25 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
利用Python实现模拟登录知乎
2022/05/25 Python