MySQL中LAG()函数和LEAD()函数的使用
作者:shyの程序猿 时间:2024-01-27 14:05:35
一、窗口函数的基本用法
从MySQL8之后才开始支持窗口函数
<窗口函数> OVER ([PARTITION BY <用于分组的列>] ORDER BY <用于排序的列>)
二、LAG()和LEAD()函数介绍
lag和lead分别是向前向后的意思
参数有三个。expression:列名;offset:偏移量;default_value:超出记录窗口的默认值(默认为null,可以设置为0)
三、数据准备(建表sql在最后)
1、LAG()函数:统计与前一天相比温度更高的日期Id
我们先按照日期进行排序,然后找到当天比前一天温度高的id;使用lag()函数,将温度向后推一天。
select id, date, temperature, LAG(temperature, 1, 0) OVER (order by date) as temp FROM weather
查询结果:
然后将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;
结果如下:
2、LEAD()函数:统计与后一天相比温度更高的日期Id
我们还是先按照日期进行排序,然后找到当天比后一天温度高的id;使用lead()函数,将温度向后推一天。
select id, date, temperature, LEAD(temperature, 1, 0) OVER (order by date) as temp FROM weather
查询结果:
然后将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;
查询结果:
四、建表数据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;
来源:https://blog.csdn.net/shy_1762538422/article/details/126304710
标签:mysql,lag,lead,函数


猜你喜欢
Apple在Safari 4中抛弃品牌视觉设计
2009-02-26 13:05:00

JavaScript 模拟类机制及私有变量的方法及思路
2024-05-03 15:04:55
Python pip安装lxml出错的问题解决办法
2021-11-17 07:36:07
带你轻松接触 MySQL中损坏的MyISAM表
2008-12-19 17:55:00
利用Pandas索引和选取数据方法详解
2023-04-30 23:30:07

python实现写数字文件名的递增保存文件方法
2022-10-18 18:50:50
mysql备份脚本 mysqldump使用方法详解
2024-01-24 12:27:04
一个输入框提示列表效果
2008-03-09 18:53:00
golang gorm模型结构体的定义示例
2024-04-23 09:35:24
python3.5的包存放的具体路径
2023-11-27 21:11:21
简单了解django索引的相关知识
2021-10-01 14:55:43

Go Plugins插件的实现方式
2023-10-15 01:51:20
细化解析:SQL Server数据库的集群设计
2009-02-05 15:59:00
MYSQL中Truncate的用法详解
2024-01-17 12:00:09
一文带你了解Python中的输入与输出
2023-11-26 12:05:24

python 获取list特定元素下标的实例讲解
2021-12-13 23:54:41

python将音频进行变速的操作方法
2023-10-05 19:04:34

Python中的bytes类型用法及实例分享
2022-12-19 01:50:42
sql语句之数据操作介绍
2024-01-22 18:09:39
MySQL中对于NULL值的理解和使用教程
2024-01-27 22:51:02