MySQL中LAG()函数和LEAD()函数的使用
一、窗口函数的基本用法
从MySQL8之后才开始支持窗口函数
<窗口函数> OVER ([PARTITION BY <用于分组的列>] ORDER BY <用于排序的列>)
二、LAG()和LEAD()函数介绍
- lag和lead分别是向前向后的意思
- 参数有三个。expression:列名;offset:偏移量;default_value:超出记录窗口的默认值(默认为null,可以设置为0)
三、数据准备(建表sql在最后)
1、LAG()函数:统计与前一天相比温度更高的日期Id
我们先按照日期进行排序,然后找到当天比前一天温度高的id;使用lag()函数,将温度向后推一天。
SELECTid,date,temperature,LAG( temperature, 1, 0 ) OVER ( ORDER BY date ) AS temp
FROMweather;
查询结果:
然后将temperature大于temp 并且temp不等于0的数据挑选出来
SELECTid
FROM(SELECT id, date, temperature, LAG( temperature, 1, 0) OVER ( ORDER BY date ) AS temp FROM weather) tmp
WHEREtemperature > temp AND temp != 0;
结果如下:
2、LEAD()函数:统计与后一天相比温度更高的日期Id
我们还是先按照日期进行排序,然后找到当天比后一天温度高的id;使用lead()函数,将温度向后推一天。
SELECTid,date,temperature,LEAD( temperature, 1, 0 ) OVER ( ORDER BY date ) AS temp
FROMweather;
查询结果:
然后将temperature大于temp 并且temp不等于0的数据挑选出来
SELECTid
FROM( SELECT id, date, temperature, LEAD( temperature, 1, 0 ) OVER ( ORDER BY date ) AS temp FROM weather ) tmp
WHEREtemperature > temp AND temp != 0;
查询结果:
四、建表数据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()函数的使用相关推荐
- LAG函数和LEAD函数(案例详解)
在SQL的开窗函数使用中,LAG函数和LEAD函数出现频率还是很高的.这里博主将这两个函数的用法结合案例做一下介绍. 一.函数介绍 LAG(col,n,DEFAULT) 用于统计窗口内往上第n行值 第 ...
- mysql中locat函数,MySQL中的LOCATE和POSITION函数使用方法 | 很文博客
不常用:MySQL中的LOCATE和POSITION函数 LOCATE(substr,str) POSITION(substr IN str) 返回子串 substr 在字符串 str 中第一次出现的 ...
- mysql的json函数与实例_Mysql实例详解Mysql中的JSON系列操作函数
<Mysql实例详解Mysql中的JSON系列操作函数>要点: 本文介绍了Mysql实例详解Mysql中的JSON系列操作函数,希望对您有用.如果有疑问,可以联系我们. MYSQL必读前言 ...
- mysql 排名_学会在MySQL中实现Rank高级排名函数,所有取前几名问题全部解决.
MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...
- mysql中locat函数,MySQL中的LOCATE和POSITION函数使用方法
不常用:MySQL中的LOCATE和POSITION函数 LOCATE(substr,str) POSITION(substr IN str) 返回子串 substr 在字符串 str 中第一次出现的 ...
- Mysql中当前日期(时间)函数总结
Mysql中当前日期(时间)函数总结 select now():获取当前日期(包含时分秒) 2.Select date_formate(now(),"格式化") select da ...
- mysql rank_在MySQL中实现Rank高级排名函数
MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...
- 在MySQL中实现Rank高级排名函数
在MySQL中实现Rank高级排名函数 前言 用例表 1.在MySQL中实现普通排名 2.在MySQL中实现并列连续序号排名 3.在MySQL中实现并列非连续序号排名 4.随机获得一条数据 5.判断数 ...
- rank()函数 mysql_在MySQL中实现Rank高级排名函数
在MySQL中实现Rank高级排名函数 MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可 ...
最新文章
- NVIDIA Jetson NX开发板在U盘挂载的时候出现:error mounting unknown filesystem type ‘exfat‘错误
- struts2教程(3)--请求参数处理
- 【qduoj】C语言_凯撒密码
- 后BERT时代:15个预训练模型对比分析与关键点探究
- 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)
- 使用深度学习框架 Tensorflow 实现线性回归 (Linear Model)
- java使用内部类的好处及其初始化
- mysql数据库执行事务日志_第十章 MySQL事务及其日志介绍
- oracle flex asm ceph,关于12c flex cluster及 flex asm疑问
- 面试题——股票利益最大化
- pythonnumpy详解_Python精讲Numpy基础,大牛笔记详细解释
- vue怎么实现右键二级菜单_vue中如何自定义右键菜单详解
- 非参数统计之局部多项式回归
- Vijos P1423 最佳路线
- stm8s103k3 周期 捕获_基于stm8s103k3单片机串口UART的正确使用分享
- 关于解决windows10和ubuntu18.04.2 双系统时win10时间不对的问题
- 纯技术上来说,《看门狗》里的各种骇客技术有可能实现吗?
- 拉勾网的职位信息爬取(详细)
- 网站建设需要多少钱?与什么有关系?
- ICP许可证怎么申请?