sql中的窗口函数:lead,lag

偶然间发现两个非常好用的函数:lead,lag,它们可以将数据进行位移,位移之后用来计算环比应该是很容易了。因为涉及到位移,所以会有数据会被挪位而消失。

  • lag :形象的理解就是把数据从上向下推,上端出现空格

  • lead :形象的理解就是把数据从下向上推,下端出现空格

lag 和lead 有三个参数,第一个参数是列名,第二个参数是偏移的offset,第三个参数是 超出记录窗口时的默认值。举例如下:

原始数据表:items

sql中的窗口函数:lead,lag_第1张图片

运用lag函数: 

select *,lag(item_brand,1,0) over (order by item_id) from items

 sql中的窗口函数:lead,lag_第2张图片

 运用lead函数: 

sql中的窗口函数:lead,lag_第3张图片


lag函数在连续问题上的用法:

sql中的窗口函数:lead,lag_第4张图片

sql中的窗口函数:lead,lag_第5张图片

select distinct(Num) ConsecutiveNums from 
(select *,
lag(Num,1,0) over (order by Id) Num1 ,
lag(Num,2,0) over (order by Id) Num2
from Logs) a
where Num=Num1 and Num1=Num2

你可能感兴趣的:(sql,数据库)