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

您所在的位置:网站首页 查看安卓应用安装目录 MySQL中LAG()函数和LEAD()函数的使用

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

2024-06-06 13:55| 来源: 网络整理| 查看: 265

一、窗口函数的基本用法

从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;


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3