MySQL会话长度分组中值(小时)

MySQL会话长度分组中值(小时),mysql,sql,grouping,median,timestep,Mysql,Sql,Grouping,Median,Timestep,我需要计算MySQL中用户会话长度的中位数(ts_last-ts_first)乘以天数(ts_first)。 尝试像这样的东西,但不起作用 谢谢 SET @row_number:=0; SET @medin_group:=’’; SELECT @row_number:=CASE WHEN @median_group= FROM_UNIXTIME(first_ts, '%t') THEN @row_number+1 ELSE 1 END AS count_by_time, @median_gr

我需要计算MySQL中用户会话长度的中位数(ts_last-ts_first)乘以天数(ts_first)。 尝试像这样的东西,但不起作用

谢谢

SET @row_number:=0;
SET @medin_group:=’’;

SELECT @row_number:=CASE 
WHEN @median_group= FROM_UNIXTIME(first_ts, '%t') THEN @row_number+1
ELSE 1
END AS count_by_time,
@median_group:= FROM_UNIXTIME(first_ts, '%t') AS median_group,
FROM_UNIXTIME(first_ts, '%t') AS by_time,
AVG(last_ts-first_ts) AS length,
(SELECT 
              COUNT (*)
         FROM 
                  User_sessions
           WHERE 
                      a.by_time=by_time) AS total_by_time
FROM 
   (SELECT   FROM_UNIXTIME(first_ts, '%t') AS by_time, AVG(last_ts-first_ts) AS length
FROM 
     User_sessions
  ORDERS BY by_time, length) AS 

要获取表用户会话(id、first\u ts、last\u ts)的持续时间的中值,请执行以下操作:

这项工作由以下人员完成:

1) 内部选择:为按持续时间排序的每行用户会话分配增量计数器

lowest duration counter=1
2nd lowest counter=2
3rd lowest counter=3
2) 在末尾@counter=用户会话的总行数

3) 外部选择,使用计数器在行中过滤

参考资料


获取表用户会话(id、first\u ts、last\u ts)的持续时间的中值,“last\u ts-first\u ts”:

这项工作由以下人员完成:

1) 内部选择:为按持续时间排序的每行用户会话分配增量计数器

lowest duration counter=1
2nd lowest counter=2
3rd lowest counter=3
2) 在末尾@counter=用户会话的总行数

3) 外部选择,使用计数器在行中过滤

参考资料


您使用的是什么版本的MySQL?最新版本中不推荐使用变量。您使用的MySQL版本是什么?最新版本中不推荐使用变量。