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数据库命令大全
May 26 MySQL
MySQL 外键约束和表关系相关总结
Jun 20 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
Mysql关于数据库是否应该使用外键约束详解说明
Oct 24 MySQL
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
Dec 06 MySQL
Mysql外键约束的创建与删除的使用
Mar 03 MySQL
MySQL实现配置主从复制项目实践
Mar 31 MySQL
MySQL 外连接语法之 OUTER JOIN
Apr 09 MySQL
MYSQL常用函数介绍
May 05 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 MySQL
MySql数据库触发器使用教程
Jun 01 MySQL
MySQL存储过程及语法详解
Aug 05 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反弹shell实现代码
2009/04/22 PHP
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php实现json编码的方法
2015/07/30 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
php中strtotime函数性能分析
2016/11/20 PHP
PHP不使用内置函数实现字符串转整型的方法示例
2017/07/03 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
动态改变textbox的宽高的js
2006/10/26 Javascript
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
JavaScript自定义等待wait函数实例分析
2015/03/23 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
2016/04/01 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
对python中的 os.mkdir和os.mkdirs详解
2018/10/16 Python
Django之模板层的实现代码
2019/09/09 Python
python属于跨平台语言码
2020/06/09 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
nohup的用法
2014/08/10 面试题
保险公司晨会主持词
2014/03/22 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫