MYSQL LAG()与LEAD()的区别
(相关资料图)
目录
1.lag()2.lead()这两个函数是偏移量函数,可以查出一个字段的前面N个值或者后面N个值,配合over来使用。
下面举例说明,新建表格如下:
drop table if exists exam_record; CREATE TABLE exam_record ( id int PRIMARY KEY AUTO_INCREMENT COMMENT "自增ID", uid int NOT NULL COMMENT "用户ID", exam_id int NOT NULL COMMENT "试卷ID", start_time datetime NOT NULL COMMENT "开始时间", submit_time datetime COMMENT "提交时间", score tinyint COMMENT "得分" )CHARACTER SET utf8 COLLATE utf8_general_ci; INSERT INTO exam_record(uid,exam_id,start_time,submit_time,score) VALUES (1001, 9001, "2020-01-01 09:01:01", "2020-01-01 09:21:59", 90), (1002, 9001, "2020-01-20 10:01:01", "2020-01-20 10:10:01", 89), (1002, 9001, "2020-02-01 12:11:01", "2020-02-01 12:31:01", 83), (1003, 9001, "2020-03-01 19:01:01", "2020-03-01 19:30:01", 75), (1004, 9001, "2020-03-01 12:01:01", "2020-03-01 12:11:01", 60), (1003, 9001, "2020-03-01 12:01:01", "2020-03-01 12:41:01", 90), (1002, 9001, "2020-05-02 19:01:01", "2020-05-02 19:32:00", 90), (1001, 9002, "2020-01-02 19:01:01", "2020-01-02 19:59:01", 69), (1004, 9002, "2020-02-02 12:01:01", "2020-02-02 12:20:01", 99), (1003, 9002, "2020-02-02 12:01:01", "2020-02-02 12:31:01", 68), (1001, 9002, "2020-02-02 12:01:01", "2020-02-02 12:43:01", 81), (1001, 9002, "2020-03-02 12:11:01", null, null);
1.lag()
语法:lag(expr,N,default)
select *,lag(start_time,1) over(order by id)lad_1, lag(uid,2) over(order by id)lad_2 from exam_record
可以看到所有的start_time都等于前面一个的start_time,前面没有的填充NULL,设置lag()里面的参数为2,可以看到所有的uid偏移了两个。
select *,lag(start_time,2,0) over(partition by uid order by id)lag_1 from exam_record
根据uid分组对start_time向前移动2个单元,然后设置NULL值默认填充为0.可以自己体会一下数据的移动方式。
2.lead()
语法:lead(expr,N,default)
select *,lead(start_time,1) over(order by id)lead_1, lead(uid,2) over(order by id)lead_2 from exam_record
可以看到所有的start_time都等于后面一个的start_time,后面没有的填充NULL,设置lead()里面的参数为2,可以看到所有的uid都等于后面第二个的uid。
select *,lead(start_time,1) over(partition by uid order by id)lead_1 from exam_record
还可以根据uid进行分组,然后再进行偏移。
到此这篇关于MYSQL LAG()与LEAD()的区别的文章就介绍到这了,更多相关MYSQL LAG() LEAD()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
关键词:
- MYSQL LAG()与LEAD()的区别
- 【世界快播报】神秘蜀韵 百部川扬 | 独木舟54天横渡大西洋 中国教授的奇幻漂流
- 中国式ESG|能源:转型压力最大、前景最广
- GE医疗携23款先进的医疗科技和国产创新成果亮相第87届CMEF-世界要闻
- 软件工程专业需要考研吗 软件工程专业 全球观点
- 汇添富量化选股混合拟聘用吴振翔担任职该基金之基金经理 天天速看料
- 世界信息:特斯拉股东大会实录:马斯克否认辞职 作出经济预测 称最酷炫皮卡年内交付
- 新巨丰:5月16日获融资买入174.33万元,占当日流入资金比例4.46% 环球快消息
-
中国的师长是什么军衔_师长是什么军衔 天天报资讯
1、师长是军队中的高级将领,军衔通常为大校或少将。2、对应地方行政级别为厅局级正职(省厅正职,如某省交
-
2换1,4换1,勇士今夏将达成的两笔交易,拉文携手布朗辅佐库里
2换1,4换1,勇士今夏将达成的两笔交易,拉文携手布朗辅佐库里,勇士,汤普森,美国篮球,扎克·拉文,杰伦·布
-
广州浪奇5年累亏超50亿 曾因财务造假被罚450万
5月13日,老牌日化企业广州浪奇(000523 SZ)发布公告称,公司目前正筹划与控股股东广州轻工工贸集团有限公
-
韦世豪地域歧视未被罚,足协思维停留在31年前,禁讲真话太双标|环球资讯
同样是在网络媒体上发言,道出事实、发表自己的观点以促进中国裁判进步,被足协视为了不可接受和造成不良影
X 关闭
X 关闭