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 Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
MYSQL 无法识别中文的永久解决方法
Jun 03 MySQL
浅析MySQL如何实现事务隔离
Jun 26 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
MySQL系列之五 视图、存储函数、存储过程、触发器
Jul 02 MySQL
SQL实现LeetCode(197.上升温度)
Aug 07 MySQL
MySQL中order by的使用详情
Nov 17 MySQL
将MySQL的表数据全量导入clichhouse库中
Mar 21 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
MYSQL常用函数介绍
May 05 MySQL
手把手带你彻底卸载MySQL数据库
Jun 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
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
2016/03/17 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
Jquery 绑定时间实现代码
2011/05/03 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
2016/07/07 Javascript
微信小程序框架wepy之动态控制类名
2018/09/14 Javascript
bootstrap datepicker的基本使用教程
2019/07/09 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
Python threading多线程编程实例
2014/09/18 Python
python中黄金分割法实现方法
2015/05/06 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
几道PHP面试题
2013/04/14 面试题
如何利用find命令查找文件
2016/11/18 面试题
高级Java程序员面试题
2016/06/23 面试题
高三英语教学反思
2014/01/13 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
工作经历证明书范文
2014/11/02 职场文书
小学教师年度个人总结
2015/02/05 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python