MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用
一、窗口函數(shù)的基本用法
從MySQL8之后才開始支持窗口函數(shù)
<窗口函數(shù)> OVER ([PARTITION BY <用于分組的列>] ORDER BY <用于排序的列>)
二、LAG()和LEAD()函數(shù)介紹
- lag和lead分別是向前向后的意思
- 參數(shù)有三個。expression:列名;offset:偏移量;default_value:超出記錄窗口的默認(rèn)值(默認(rèn)為null,可以設(shè)置為0)
三、數(shù)據(jù)準(zhǔn)備(建表sql在最后)

1、LAG()函數(shù):統(tǒng)計與前一天相比溫度更高的日期Id
我們先按照日期進(jìn)行排序,然后找到當(dāng)天比前一天溫度高的id;使用lag()函數(shù),將溫度向后推一天。
select id, date, temperature, LAG(temperature, 1, 0) OVER (order by date) as temp FROM weather
查詢結(jié)果:

然后將temperature大于temp 并且temp不等于0的數(shù)據(jù)挑選出來
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;
結(jié)果如下:

2、LEAD()函數(shù):統(tǒng)計與后一天相比溫度更高的日期Id
我們還是先按照日期進(jìn)行排序,然后找到當(dāng)天比后一天溫度高的id;使用lead()函數(shù),將溫度向后推一天。
select id, date, temperature, LEAD(temperature, 1, 0) OVER (order by date) as temp FROM weather
查詢結(jié)果:

然后將temperature大于temp 并且temp不等于0的數(shù)據(jù)挑選出來
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;
查詢結(jié)果:

四、建表數(shù)據(jù)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;
到此這篇關(guān)于MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用的文章就介紹到這了,更多相關(guān)mysql LAG()和LEAD()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql設(shè)置update時間字段自動更新的實現(xiàn)
本文主要介紹了在MySQL中實現(xiàn)時間字段的自動更新功能,通過設(shè)置on update CURRENT_TIMESTAMP屬性來避免在更新時手動更新時間字段,具有一定的參考價值,感興趣的可以了解一下2025-10-10
mysql數(shù)據(jù)庫row_number函數(shù)舉例介紹
在MySQL中ROW_NUMBER()是一種用來生成行號的功能函數(shù),通常情況下它用于對查詢結(jié)果進(jìn)行編號,以便方便地查看每行的位置,下面這篇文章主要給大家介紹了關(guān)于mysql數(shù)據(jù)庫row_number函數(shù)舉例介紹的相關(guān)資料,需要的朋友可以參考下2024-02-02
mysql中使用replace替換某字段的部分內(nèi)容
這篇文章主要介紹了mysql中使用replace替換某字段的部分內(nèi)容的方法,需要的朋友可以參考下2014-11-11

