
Mysql 实现 lag 函数实例
2017 年 7 月 21 日
最近工作中用到 Mysql 要实现 oracle 的 lag 函数,网络上搜了不少文章,大都格式不清
晰,或说明不清楚,所以自己做出例子来留个记录同时也分享一下。
文章结构:
1.准备环境,制造模拟数据
2. SQL 语句与结果展示
3.分析说明
4.总结
1. 准备环境:
新建一个表 kevin_gao,里面三个字段 kemu、chengji 和 id;
CREATE TABLE `kevin_gao` (
`id` INT NULL COMMENT '序号',
`kemu` VARCHAR(50) NULL COMMENT '科目',
`chengji` INT NULL COMMENT '成绩'
)
COLLATE='utf8_bin' ENGINE=InnoDB ;
做一些假的模拟数据放到表里面
insert into kevin_gao (id,kemu,chengji) values (1,'变形金刚',90);
insert into kevin_gao (id,kemu,chengji) values (2,'变形金刚',95);
insert into kevin_gao (id,kemu,chengji) values (3,'变形金刚',92);
insert into kevin_gao (id,kemu,chengji) values (4,'变形金刚',90);
insert into kevin_gao (id,kemu,chengji) values (1,'GIJOE',89);
insert into kevin_gao (id,kemu,chengji) values (2,'GIJOE',90);
insert into kevin_gao (id,kemu,chengji) values (3,'GIJOE',92);
2.先看看原始数据的样子,之后会按照 ID 进行分组,取前一次的成绩做出 lag 效果
select * from kevin_gao
现在用变量的方式实现 LAG 的效果看看
select base.id,base.kemu,base.before_chengji,base.chengji
from (
评论0