Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 不同用户行之间的最大日期差_Mysql_Date_Datediff - Fatal编程技术网

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 

最大日期差异请详细说明?