MySQL中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;

结果如下:

怪兽AI数字人 怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

怪兽AI数字人 44 查看详情 怪兽AI数字人

MySQL中LAG()函数和LEAD()函数如何使用

2、LEAD()函数:统计与后一天相比温度更高的日期Id

首先,我们对日期进行排序,接着使用lead()函数将温度向后推一天,并找出当天比后一天温度高的id。

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()函数如何使用的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/265431.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
《宝可梦直面会》时长遭泄露 或将成系列最长发布会
上一篇 2026年10月12日 20:48:42
心智营销进入BMS时代:巨量引擎发布全新一代品牌心智营销解决方案
下一篇 2025年12月5日 20:41:58

相关推荐

  • MySQL中如何使用YEARWEEK函数

    YEARWEEK(date):获取日期的年和周 如知AI笔记 如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型 27 查看详情 SELECT YEARWEEK(SYSDATE()) SELECT YEARWEEK(‘2015-01-10′) …

    2026年10月12日
    100
  • MySQL数据以全量和增量方式,向ES搜索引擎同步流程

    MySQL数据以全量和增量方式,向ES搜索引擎同步流程MySQL数据以全量和增量方式,向ES搜索引擎同步流程MySQL数据以全量和增量方式,向ES搜索引擎同步流程MySQL数据以全量和增量方式,向ES搜索引擎同步流程

    一、配置详解 1、下载内容 Elasticsearch 版本:6.3.2Logstash 版本:6.3.2MySQL Connector:mysql-connector-java-5.1.13.jar 2、核心配置路径 路径:/usr/local/logstash新建配置目录:sync-config…

    2026年10月12日 • 用户投稿
    100
  • node+mysql数据库连接池连接的方法是什么

    mysql有两种连接方式:一种是直接连接 另一种是池化连接,我们这篇讲的是池化连接。 为了让解惑,我简答的写份直接连接的代码,如下: var mysql = require(‘mysql’);var connection = mysql.createConnection({ host : ‘loca…

    2026年10月12日
    000
  • 怎么使用MySQL进行JDBC编程与增删改查

    怎么使用MySQL进行JDBC编程与增删改查怎么使用MySQL进行JDBC编程与增删改查怎么使用MySQL进行JDBC编程与增删改查怎么使用MySQL进行JDBC编程与增删改查

    Java的数据库编程JDBC 概念 jdbc是一种用于执行sql语句的java api,他是java中的数据库连接规范,这个api由一些接口和类组成。它提供了一个标准的api,使得java开发人员可以统一访问多种关系数据库 本质是通过代码自己实现一个MySQL客户端,通过网络和服务器进行数据的交互,…

    2026年10月12日 • 用户投稿
    600
  • mysql怎么查询字符串中某个字符串出现的次数

    mysql查询字符串中某个字符串出现的次数 例如:查询字符串”jjhshdgl’ddiiiisssddddjjsssjjssjj”中”ss”的个数 1.首先查询”ss”的长度 select length(&#8220…

    2026年10月12日
    200
  • MySQL连接查询是什么

    MySQL连接查询是什么MySQL连接查询是什么MySQL连接查询是什么MySQL连接查询是什么

    内连接 内连接innerjoin是最常用的连接操作。用数学术语描述,这句话可以重写为:从集合论的角度看,我们要求两个集合的交集;而从笛卡尔积的角度看,则需要筛选出满足on条件的笛卡尔积元素。 在我看来内连接和等值连接差不多,自然连接是内连接中的一个特殊连接 自然连接和等值连接的区别 什么是自然连接?…

    2026年10月12日 • 用户投稿
    100
  • Java中爬虫怎么实现 分析网页抓取技术

    Java中爬虫怎么实现 分析网页抓取技术Java中爬虫怎么实现 分析网页抓取技术Java中爬虫怎么实现 分析网页抓取技术Java中爬虫怎么实现 分析网页抓取技术

    java中实现爬虫的核心在于模拟浏览器行为并提取信息,主要依赖网络请求库(如httpclient、okhttp)、html解析库(如jsoup)及多线程技术。1. 网络请求推荐使用httpclient或okhttp,二者功能强大且性能优秀;2. html解析常用jsoup,其支持css选择器且简单易…

    2026年10月12日 • 用户投稿
    400
  • Ubuntu如何安装Mysql启用远程连接

    Ubuntu如何安装Mysql启用远程连接Ubuntu如何安装Mysql启用远程连接Ubuntu如何安装Mysql启用远程连接Ubuntu如何安装Mysql启用远程连接

    背景 用的是百度云的云服务器(其他云服务器同理),系统是ubuntu 20.04 lts,mysql版本8.0+,需求是在windows上开发,可以随时远程连接读写服务器上的mysql 建立到服务器的远程连接 用ssh客户端或者云服务器厂家提供的网页版控制台都行,只要你能连上服务器就行 顺便私心推荐…

    2026年10月12日 • 用户投稿
    200
  • Mysql怎么实现全外连接

    Mysql怎么实现全外连接Mysql怎么实现全外连接Mysql怎么实现全外连接Mysql怎么实现全外连接

    mysql中多表查询只提供了内连接,左外连接与右外连接: table_reference {[INNER] JOIN | {LEFT|RIGHT} [OUTER] JOIN} table_reference ON conditional_expr 1】INNER JOIN ON内连接(只写join时…

    2026年10月12日 • 用户投稿
    300
  • MySQL如何实现数据校验 约束与触发器验证方案对比

    MySQL如何实现数据校验 约束与触发器验证方案对比MySQL如何实现数据校验 约束与触发器验证方案对比MySQL如何实现数据校验 约束与触发器验证方案对比MySQL如何实现数据校验 约束与触发器验证方案对比

    %ignore_a_1%实现数据校验主要通过约束和触发器两种方式。1. 约束提供声明式校验,包括not null、unique、primary key、foreign key和check,适用于简单高效的数据校验场景;2. 触发器则通过事件自动执行sql代码,支持复杂逻辑判断和跨表校验,如插入前检查…

    2026年10月12日 • 用户投稿
    100
  • SQL查询中条件计数与聚合函数的应用

    本文详细介绍了如何在现有SQL分组查询中,通过巧妙利用%ignore_a_1%SUM()实现条件计数,例如统计每个司机的未请假缺勤次数。通过将代表未请假的数值列直接求和,可以高效地在原有统计(如总缺勤次数)的基础上,新增一列展示特定条件的汇总数据,从而优化查询结果的全面性和实用性。 优化SQL查询:…

    2026年10月12日
    300
  • 怎么使用mysql binlog恢复数据

    怎么使用mysql binlog恢复数据怎么使用mysql binlog恢复数据怎么使用mysql binlog恢复数据怎么使用mysql binlog恢复数据

    在要使用 mysql 的 binlog 进行数据恢复前,必须首先启用 binlog。在这里建立一个测试环境,以了解如何使用mysql binlog恢复数据库。原理比较简单,binlog 会存储mysql中变化的数据,比如你创建了一个数据库,写入了一些数据,这些都会存储在 mysql 的 binlog…

    2026年10月12日 • 用户投稿
    100
  • MySQL中查询缓存的基础知识有哪些

    什么是查询缓存? mysql 查询缓存虽然在 mysql 5.7 中被弃用(并在 8.0 中删除),但存储以前在内存中运行的语句:换句话说,查询缓存通常将select语句存储在数据库的内存中。因此,如果我们运行一个查询,然后在一段时间后再次运行完全相同的查询,结果将更快地返回,因为它们将从内存而不是…

    2026年10月12日
    200
  • Linux环境下如何安装MySQL数据库

    Linux环境下如何安装MySQL数据库Linux环境下如何安装MySQL数据库Linux环境下如何安装MySQL数据库Linux环境下如何安装MySQL数据库

    1.概述 mysql二进制安装的优点在于可以在任何路径下安装,且具有良好的灵活性,一台服务器也可以安装多个mysql实例。这种方式的不足之处在于它是在编译过后的,因此性能不如从源代码编译的版本,并且无法灵活地定制编译参数。如果用户即不想安装最简单却不够灵活的rpm包,又不想安装复杂费时的源码包,那么…

    2026年10月12日 • 用户投稿
    100
  • MySQL中创建表时设置自增主键的规则

    在mysql中设置自增主键的方法是:在列定义中添加auto_increment属性。具体步骤包括:1. 创建表时,在需要自增的主键列上添加auto_increment属性,例如create table users (id int auto_increment, primary key (id));2…

    2026年10月12日
    200
  • FreeBSD13中怎么安装MySQL数据库

    FreeBSD13中怎么安装MySQL数据库FreeBSD13中怎么安装MySQL数据库FreeBSD13中怎么安装MySQL数据库FreeBSD13中怎么安装MySQL数据库

    mysql是一个开放源码的小型关联式数据库管理系统,目前mysql被广泛地应用在internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了mysql作为网站数据库。 环境 FreeBSD 13-RELEASE 修改p…

    2026年10月12日 • 用户投稿
    000
  • php如何查询MySQL的8条数据

    PHP是一款非常流行并且实用的编程语言,它可以用于各种不同的项目,从简单Java应用程序到大型Web应用程序。对于许多网站工程师来说,查询数据库中的数据是一个基本的需求,这可以使我们更好地了解网站上的用户行为,以及优化网站的性能。本文将探讨使用PHP编写代码查询8条数据库数据的方法。 在开始之前,您…

    2026年10月12日
    000
  • MySQL中存储的数据查询的时候怎么区分大小写

    MySQL中存储的数据查询的时候怎么区分大小写MySQL中存储的数据查询的时候怎么区分大小写MySQL中存储的数据查询的时候怎么区分大小写MySQL中存储的数据查询的时候怎么区分大小写

    场景描述 今天在将 hive 表同步到 mysql 之后,其中有一列是唯一列,但是在 mysql 中查询的时候 count 与 distinct count 查询出来的数值是不一样的,这么来看的话是有重复的数据(按理说不应该的,因为在 hive 中,这两个数值是一样的),那么将重复的数据查出来看了一…

    2026年10月12日 • 用户投稿
    000
  • MySQL内存不足启动失败怎么解决

    MySQL内存不足启动失败怎么解决MySQL内存不足启动失败怎么解决MySQL内存不足启动失败怎么解决MySQL内存不足启动失败怎么解决

    1.启动MySQL时一直不成功,查看错误日志 /var/log/mysql/error.log 2.主要的错误信息有如下几条: /var/log/mysql/error.log [ERROR] InnoDB: mmap(136151040 bytes) failed; errno 12[ERROR]…

    2026年10月12日 • 用户投稿
    000
  • windows系统mysql压缩包版本安装的方法是什么

    windows系统mysql压缩包版本安装的方法是什么windows系统mysql压缩包版本安装的方法是什么windows系统mysql压缩包版本安装的方法是什么windows系统mysql压缩包版本安装的方法是什么

    下载 下载上面的,下面的不行 解压 我的解压路径 E:Program_filesmysql-5.7.13-winx64本着专业的态度,任何专业软件安装路径都要纯字母。 配置文件 在E:Program_filesmysql-5.7.13-winx64下面创建一个my.ini配置文件 其中的basedi…

    2026年10月12日 • 用户投稿
    300

发表回复

登录后才能评论
关注微信