mysql的lag和Lead函数

1、mysql中没有lag和lead函数,因为Oracle使用惯了,没有这函数有些不方便。于是琢磨能不能实现。

2、如果用函数,肯定可以实现。但如果不用函数,是否能够实现呢?经过试验,发现可以达到目的。

对于lag函数,可以这么写

select @lagfield,@lagfiled:=targField,t.* from table t ,(select @lagfield:=‘‘) r

3、其中targField是你想要在下一行呈现的字段,根据字段是字符还是数字,最后的select 应该不同,

1)如果是数字,则应该(select @lagfield:=0) r,

2)如果字符,则就是例子中的

4、对于lead,正好可以相反,可以四步走

1)生成rownum

2)根据rownum倒序

3)按照lag方式实现

4)在按照rownum正序

时间: 2024-11-03 20:55:40

mysql的lag和Lead函数的相关文章

oracle lag与lead分析函数简介

lag与lead函数是跟偏移量相关的两个分析函数,通过这两个函数我们可以取到当前行列的偏移N行列的值 lag可以看着是正的向上的偏移 lead可以认为负的向下的偏移 具体我们来看几个例子: 我们先看下scott的emp表的两列数据: select deptno, sal from scott.emp order by deptno DEPTNO SAL 10 2450.00 10 5000.00 10 1300.00 20 2975.00 20 3000.00 20 1100.00 20 800

oracle listagg函数、lag函数、lead函数 实例

Oracle大师Thomas Kyte在他的经典著作中,反复强调过一个实现需求方案选取顺序: “如果你可以使用一句SQL解决的需求,就使用一句SQL:如果不可以,就考虑PL/SQL是否可以:如果PL/SQL实现不了,就考虑Java存储过程是否可以:如果这些都不可能实现,那么就需要考虑你是否真的需要实现这个需求.” 各个关系型DBMS产品都在遵守关系型数据库模型的基本体系架构,遵循通用的SQL国际规范.同时,为了更好地配合自身数据库实现的特征,以及提供更加丰富的功能,各个DBMS纷纷在标准SQL上

oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)

LAG()和LEAD()统计函数能够在一次查询中取出同一字段的前N行的数据和后N行的值.这样的操作能够使用对同样表的表连接来实现,只是使用LAG和 LEAD有更高的效率.下面整理的LAG()和LEAD()样例: LAG(EXPRESSION,<OFFSET>,<DEFAULT>)SQL> select year,region,profit ,lag (profit,1) over (order by year)  as 51xit_exp from test; YEAR RE

[MSSQL2012]LEAD函数

LEAD函数简单点说,就是把下一行的某列数据提取到当前行来显示,看示例更能解释清楚,先看测试用脚本 DECLARE @TestData TABLE(     ID INT IDENTITY(1,1),     Department VARCHAR(20),     LastName VARCHAR(20),     Rate FLOAT ) INSERT INTO @TestData(Department,LastName,Rate) SELECT 'Document Control','Ari

MySQL和时间戳有关的函数

1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()mysql> select current_timestamp, current_timestamp();+---------------------+---------------------+| current_timestamp | current_timestamp() |+---------------------+---------------------+| 2008-

八、mysql视图、存储过程、函数以及时间调度器

1.create or replace view emp_view as select * from t4 ;给t4表创建一个名为emp_view的视图 2.drop view emp_view 删除视图 ======================================= 1.创建一个存储过程(查询所有数据) create procedure p1 () READS SQL DATA BEGIN select * from t4; END 2.创建一个存储过程(查询传参数据) cre

GROUP BY和HAVING 以及mysql中常用的日期函数

一.mysql中的GROUP BY和HAVINGGROUP BY常见的是和聚合函数(SUM,MIN,MAX,COUNT)搭配使用. 比如:SELECT category,SUM(money) AS `total` FROM user_money GROUP BY category;按类别分组统计user_money表每个类别总计有多少money 现在如果增加个条件,需要统计每个类别中支出的money总量,比如rule=1为支出,则改写语句为SELECT category,SUM(money) A

mysql 中 时间和日期函数

原文链接: mysql 中 时间和日期函数 - redfox - 博客园 http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.html ----------------------------------------------------------------------------------------------------------------------------------------------------

MySQL常用的数据类型及函数_20160920

1.常用数据类型 针对创建数据表时候 需要指定字段的数据类型,我整理的是工作常用的几种  可以参考看下数据类型 http://www.w3school.com.cn/sql/sql_datatypes.asp 2.函数处理 2.1 对文本(字符串)的处理 工作中我们经常需要用到对字符串的处理,取字段的某一部分/拼接/替换/字段长度等等 MySQL中内置许多函数支持这些操作. 下面sql代码是工作中用到,整理出来,可以直接在sqlyog中测试 SELECT INSTR("abc",&qu