mysql 日期滞后_如何滞后MySQL中的列?

要在MySQL中滞后一列,首先让我们创建一个表。创建表的查询如下-mysql> create table LagDemo

-> (

-> UserId int,

-> UserValue int

-> );

示例

使用insert命令在表中插入一些记录。查询如下-mysql> insert into LagDemo values(12,158);

mysql> insert into LagDemo values(18,756);

mysql> insert into LagDemo values(15,346);

mysql> insert into LagDemo values(87,646);

mysql> insert into LagDemo values(27,334);

mysql> insert into LagDemo values(90,968);

mysql> insert into LagDemo values(84,378);

mysql> insert into LagDemo values(85,546);

使用select语句显示表中的所有记录。查询如下-mysql> select *from LagDemo;

输出结果+--------+-----------+

| UserId | UserValue |

+--------+-----------+

|     12 |       158 |

|     18 |       756 |

|     15 |       346 |

|     87 |       646 |

|     27 |       334 |

|     90 |       968 |

|     84 |       378 |

|     85 |       546 |

+--------+-----------+

8 rows in set (0.00 sec)

这是在MySQL中滞后一列的查询-mysql> SET @f : = 0;

mysql> SET @s : = 2;

mysql> SELECT l1.UserId, l1.UserValue , l1.UserValue / l2.UserValue AS 'LAG'

-> FROM

-> (SELECT if(@f, @f: = @f+1, @f:=1) as RowNumber, UserId, UserValue FROM LagDemo) AS l1

-> LEFT JOIN

-> (SELECT if(@s, @s: = @s+1, @s: = 1) as RowNumber, UserId, UserValue FROM LagDemo) AS l2

-> ON l1.RowNumber = l2.RowNumber;

输出结果+--------+-----------+--------+

| UserId | UserValue |    LAG |

+--------+-----------+--------+

|     12 |       158 |   NULL |

|     18 |       756 |   NULL |

|     15 |       346 | 2.1899 |

|     87 |       646 | 0.8545 |

|     27 |       334 | 0.9653 |

|     90 |       968 | 1.4985 |

|     84 |       378 | 1.1317 |

|     85 |       546 | 0.5640 |

+--------+-----------+--------+

8 rows in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值