首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL lag列数据lag

MySQL lag列数据lag
EN

Stack Overflow用户
提问于 2015-07-22 02:25:36
回答 1查看 220关注 0票数 0

假设我有以下数据:

代码语言:javascript
复制
CUSTOMER_ID CONTACT_ID  COMM_CREATION_DAY DAYS_SINCE_LAST_CONTACT
10000       28036173295 2014-12-21        0
10000       28365672745 2015-01-29        DATEDIFF('2015-01-29','2014-12-21')
10000       28576719155 2015-02-26        DATEDIFF('2015-02-26','2014-01-29')
38409       28432217395 2015-02-07        0
38409       28565986955 2015-02-25        DATEDIFF('2015-02-25,'2015-02-07')

我试图获取DAYS_SINCE_LAST_CONTACT列,但MySQL中没有LEADLAG函数。如何在一条SELECT语句中做到这一点?

我尝试了以下几种方法:

代码语言:javascript
复制
SELECT CUSTOMER_ID, COMM_ID , COMM_CREATION_DAY, PREVIOUS_COMM_CREATION_DAY FROM 
(
select
c.*
, @prev AS PREVIOUS_COMM_CREATION_DAY
, @prev := COMM_CREATION_DAY
FROM contacts c, (select @prev:=NULL) vars
ORDER BY CUSTOMER_ID, c.COMM_CREATION_DAY, c.COMM_ID
) sq
ORDER BY CUSTOMER_ID, COMM_CREATION_DAY

但这给了我:

代码语言:javascript
复制
CUSTOMER_ID CONTACT_ID  COMM_CREATION_DAY LAST_CONTACT_DATE
10000       28036173295 2014-12-21        NULL
10000       28365672745 2015-01-29        2014-12-21
10000       28576719155 2015-02-26        2015-01-29
38409       28432217395 2015-02-07        2015-02-26 (THIS IS INCORRECT!)
38409       28565986955 2015-02-25        2015-02-07

在所有情况下,NULL在最后一列中都不能正确显示。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-07-22 02:43:46

是的,在mysql中,您需要使用用户定义的变量进行如下计算

代码语言:javascript
复制
select
customer_id,
contact_id,
contact_date,
DAYS_SINCE_LAST_CONTACT 
from(
  select
  customer_id,
  contact_id,
  contact_date,
  @diff:= if(@prev_customer = customer_id,datediff(contact_date,@prev_date),0) as DAYS_SINCE_LAST_CONTACT,
  @prev_customer:=customer_id,
  @prev_date:= contact_date
  from customer c,(select @prev_customer:=0,@prev_date:=null)x
  order by customer_id,contact_date
)x

http://sqlfiddle.com/#!9/6cb9f/2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31546845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档