过滤某一列的时滞

问题描述 投票:0回答:1

将在距先前购物一周以上的购物记录中选择购物中心的购物记录。

Serial_number   User_name   item    time 
----------------------------------------
      1         A             1       1 
      2         A             2      10  
      3         A             1      12  
      4         B             3      11 
      5         A             4      25 
      6         B             1      20 

结果

Serial_number   User_name   item    time 
-------------------------------------------
      2         A             2     10 
      5         A             4     25
      6         B             1     20 

分析:

  • 序列号2的购物时间为10。与用户a先前的购物序列号1的购物时间相比,购物间隔为10-1 = 9
  • 序列号5的购物时间为25。与用户a先前的购物序列号3的购物时间相比,购物间隔为25-12 = 13
mysql sql
1个回答
0
投票

您可以这样操作:

select Serial_number,   User_name,   item,    time 
from
(
  select *,
  time - coalesce(LAG (time,1) OVER (PARTITION BY User_name ORDER BY 
  Serial_number), time) AS _difference
  from Shopping
)a
where _difference > 7

输出:

Serial_number   User_name   item    time 
-------------------------------------------
      2         A             2     10 
      5         A             4     25
      6         B             1     20 
© www.soinside.com 2019 - 2024. All rights reserved.