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()函数,将温度向后推一天。
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;查询结果:
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()函数的使用的文章就介绍到这了,更多相关mysql LAG()和LEAD()函数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 MySQL中LAG()函数和LEAD()函数的使用
相关文章
- 深入了解MySQL中聚合函数的使用
- MySQL中修改表字段长度的方法(mysql修改表字段长度)
- 的使用情况MySQL上个月的使用报告分析(mysql上个月)
- 数据库使用cmd命令操作MySQL数据库(cmd命令mysql)
- MySQL默认端口号:3306(mysql默认端口号)
- else语句MySQL中使用If Else语句的基本知识(mysql中if)
- MySQL安装指南:学习如何使用安装好的MySQL(mysql安装好了怎么用)
- 服务器解决MySQL无法连接远程服务器问题(mysql连接不上远程)
- MySQL数据库管理:高效率、安全控制(mysql数据库管理器)
- MySQL改变世界:改变编码的无穷可能(mysql改变编码)
- 不同值查询MySQL查询相同字段不同值的方法(mysql相同字段)
- MySQL日志详解:读懂MySQL日志文件的作用和使用方法(mysql日志详解)
- MySQL图形化管理:极速提升数据库体验(mysql图形化管理工具)
- MySQL查询中交集的使用(mysql交集)
- MySQL 查询:掌握使用条件筛选知识(mysql查询条件)
- 如何使用MySQL定时查询数据库?(mysql定时查询数据库)
- MySQL远程登陆命令详解及使用技巧(mysql远程登陆命令)
- 如何在MySQL中查看数据库信息?(mysql怎么看数据库)
- MySQL在Discuz中的应用(mysql discuz)
- MySQL中的“in”与“sum”函数的使用方法解析(mysqlin与sum)
- MySQL如何一次性删除多个数据库(mysql删除多个数据库)
- MySQL:开放的分享,开放的未来(mysql开源?)
- MySQL中txt字段的使用方法与注意事项(mysql中txt字段)
- 如何使用mySQL中的stuff函数(mySQL中stuff)
- MySQL中如何使用IN操作符(mysql中in怎么写)
- C语言MySQL中常见函数掌握之道(c mysql常用函数)
- 深入了解如何使用CDN登录MySQL(cdn怎么登录mysql)
- 使用yum安装MySQL 57教程(mysql yum 57)
- MySQL实现两条SQL语句的除法运算(mysql两条sql相除)
- MySQL索引建立失败,引起疑惑(mysql不能建索引)
- 优化MySQL不等于符号使用技巧(mysql不等于如何优化)