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 02 MySQL
超详细教你怎么升级Mysql的版本
May 19 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
MySQL如何快速创建800w条测试数据表
Mar 17 MySQL
MySQL优化之慢日志查询
Jun 10 MySQL
MySQL如何修改字段类型和字段长度
Jun 10 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
MySQL事务的ACID特性以及并发问题方案
Jul 15 MySQL
mysqldump进行数据备份详解
Jul 15 MySQL
一文解答什么是MySQL的回表
Aug 05 MySQL
Mysql中mvcc各场景理解应用
Aug 05 MySQL
MySQL远程无法连接的一些常见原因总结
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-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
2017/06/02 jQuery
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
pycharm新建一个python工程步骤
2019/07/16 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python可以实现栈的结构吗
2020/05/27 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
python中的yield from语法快速学习
2020/11/06 Python
用CSS3将你的设计带入下个高度
2009/08/08 HTML / CSS
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
详解CSS3媒体查询响应式布局bootstrap 框架原理实战(推荐)
2020/11/16 HTML / CSS
中专毕业生自我鉴定
2013/11/21 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
服务明星事迹材料
2014/12/29 职场文书
欠款起诉书范文
2015/05/19 职场文书
杨善洲电影观后感
2015/06/04 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby