Mysql 不同用户行之间的最大日期差
以一个简单的表格为例,例如:Mysql 不同用户行之间的最大日期差,mysql,date,datediff,Mysql,Date,Datediff,以一个简单的表格为例,例如: User ID | Connection Date 1 | 12/10/2011 2 | 12/12/2011 1 | 12/14/2011 3 | 12/15/2011 1 | 12/16/2011 2 | 12/17/2011 2 | 12/18/2011 1 | 12/19/2011 3 | 12/20/2011 4 | 12/21/2011 2 | 12/21/2011 我想计算用户连接之间的最大日期差 谢谢几天
User ID | Connection Date
1 | 12/10/2011
2 | 12/12/2011
1 | 12/14/2011
3 | 12/15/2011
1 | 12/16/2011
2 | 12/17/2011
2 | 12/18/2011
1 | 12/19/2011
3 | 12/20/2011
4 | 12/21/2011
2 | 12/21/2011
我想计算用户连接之间的最大日期差
谢谢几天后
select user_id, max(conn_date) - min(conn_date) from conn
group by user_id;
尝试如下
select
mainqry.userid,
max(mainqry.daysdiff) as max_date_diff
From
(
select
qry.userid,
-- qry.id1,
-- qry.currid,
( Case when qry.id1 = qry.currid then qry.dt1 else null end ) prevconndt,
qry.currdt,
datediff((Case when qry.id1 = qry.currid then qry.dt1 else null end),qry.currdt) daysdiff
from
(
select
userid,
@previd id1,
@previd := userid as currid,
@prevdt dt1,
@prevdt := connectiondate as currdt
from table1,(select @prevdt:=NULL,@previd := NULL) a
order by userid, connectiondate desc
) qry
) MainQry
group by MainQry.userid;
它将在下面输出您给定的数据
Userid max_date_diff
1 4
2 5
3 5
4 Null
您也可以使用下面的
select
qry.userid,
-- qry.id1,
-- qry.currid,
( Case when qry.id1 = qry.currid then qry.dt1 else null end ) prevconndt,
qry.currdt,
datediff((Case when qry.id1 = qry.currid then qry.dt1 else null end),qry.currdt) daysdiff
from
(
select
userid,
@previd id1,
@previd := userid as currid,
@prevdt dt1,
@prevdt := connectiondate as currdt
from table1,(select @prevdt:=NULL,@previd := NULL) a
order by userid, connectiondate desc
) qry
最大日期差异请详细说明?