服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL中LAG()函数和LEAD()函数的使用

MySQL中LAG()函数和LEAD()函数的使用

2022-08-13 09:42shyの程序猿 Mysql

这篇文章主要介绍了MySQL中LAG()函数和LEAD()函数的使用,包括窗口函数的基本用法,LAG()和LEAD()函数介绍,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、窗口函数的基本用法

从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()函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/shy_1762538422/article/details/126304710

延伸 · 阅读

精彩推荐
  • MysqlUnity连接MySQL并读取表格数据的实现代码

    Unity连接MySQL并读取表格数据的实现代码

    本文给大家介绍Unity连接MySQL并读取表格数据的实现代码,实例化的同时调用MySqlConnection,传入参数,这里的传入参数个人认为是CMD里面的直接输入了,st...

    1eonleonChan6762021-08-20
  • MysqlMySQL中存储时间的最佳实践指南

    MySQL中存储时间的最佳实践指南

    这篇文章主要给大家介绍了关于MySQL中存储时间的最佳实践,文中详细介绍了哪种存储时间的方式更好,对大家学习或者使用mysql具有一定的参考学习价值,需要...

    潘佳俊4332021-08-25
  • Mysqlmysql中insert与select的嵌套使用方法

    mysql中insert与select的嵌套使用方法

    这篇文章主要介绍了mysql中insert与select的嵌套使用方法,代码功能非常实用,需要的朋友可以参考下 ...

    shichen20143172020-04-12
  • MysqlCentOS7 64位下MySQL5.7安装与配置教程

    CentOS7 64位下MySQL5.7安装与配置教程

    这篇文章主要介绍了CentOS7 64位下MySQL5.7安装与配置教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    人走搽谅4252020-12-02
  • MysqlMySql命令实例汇总

    MySql命令实例汇总

    这篇文章主要介绍了MySql命令,结合实例分析了MySQL数据库的创建、连接及增删改查等各种常用操作的使用方法与相关注意事项,非常具有实用价值,需要的朋友...

    Ruthless2932020-05-21
  • MysqlMySQL5.7.24版本的数据库安装过程图文详解

    MySQL5.7.24版本的数据库安装过程图文详解

    这篇文章主要介绍了MySQL5.7.24版本的数据库安装过程,需要的朋友可以参考下...

    梦里梦不出梦里梦的梦4902020-09-08
  • Mysql一篇文章弄懂MySQL查询语句的执行过程

    一篇文章弄懂MySQL查询语句的执行过程

    这篇文章主要给大家介绍了如何通过一篇文章弄懂MySQL查询语句的执行过程的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一...

    单一色调5172021-06-30
  • Mysql从MySQL全库备份中恢复某个库和某张表的方法

    从MySQL全库备份中恢复某个库和某张表的方法

    这篇文章主要介绍了从MySQL全库备份中恢复某个库和某张表的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    dbapower5782019-06-25