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 sql_mode的使用详解
May 08 MySQL
mysql数据库入门第一步之创建表
May 14 MySQL
mysql5.7使用binlog 恢复数据的方法
Jun 03 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
MySQL 如何设计统计数据表
Jun 15 MySQL
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
Jun 26 MySQL
MySQL Innodb索引机制详细介绍
Nov 23 MySQL
Mysql分析设计表主键为何不用uuid
Mar 31 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
mysql 8.0.27 绿色解压版安装教程及配置方法
Apr 20 MySQL
sql查询语句之平均分、最高最低分及排序语句
May 30 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,js双版本
2012/09/25 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
Node.js dgram模块实现UDP通信示例代码
2017/09/26 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
从零学python系列之教你如何根据图片生成字符画
2014/05/23 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
Python使用wxPython实现计算器
2018/01/30 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
利用Python库Scapy解析pcap文件的方法
2019/07/23 Python
Python项目跨域问题解决方案
2020/06/22 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
普通PHP程序员笔试题
2016/01/01 面试题
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
银行演讲稿范文
2014/01/03 职场文书
承诺书的格式范文
2014/03/28 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
2014保险公司个人工作总结
2014/12/09 职场文书
活动简报范文
2015/07/22 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
django上传文件的三种方式
2021/04/29 Python
python中filter,map,reduce的作用
2022/06/10 Python