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
MYSQL数据库使用UTF-8中文编码乱码的解决办法
May 26 MySQL
mysql备份策略的实现(全量备份+增量备份)
Jul 07 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
Oct 16 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
MySQL中EXPLAIN语句及用法
May 20 MySQL
MySQL中order by的执行过程
Jun 05 MySQL
Mysql中@和@@符号的详细使用指南
Jun 05 MySQL
MySQL添加索引特点及优化问题
Jul 23 MySQL
MySQL中dd::columns表结构转table过程及应用详解
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
深入掌握include_once与require_once的区别
2013/06/17 PHP
如何在php中正确的使用json
2013/08/06 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
vue-router 组件复用问题详解
2018/01/22 Javascript
浅析前端路由简介以及vue-router实现原理
2018/06/01 Javascript
React组件重构之嵌套+继承及高阶组件详解
2018/07/19 Javascript
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
[30:51]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第一局
2016/03/04 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
python检测lvs real server状态
2014/01/22 Python
浅析Python中else语句块的使用技巧
2016/06/16 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
python实点云分割k-means(sklearn)详解
2020/05/28 Python
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
美国50岁以上单身人士约会平台:SilverSingles
2018/06/29 全球购物
幼师专业求职推荐信
2013/11/08 职场文书
《莫高窟》教学反思
2014/02/25 职场文书
酒店节能减排方案
2014/05/26 职场文书
灵能百分百第三季什么时候来?
2022/03/15 日漫
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏
linux目录管理方法介绍
2022/06/01 Servers