SQL查询:分组,再次计算组和组中最大值和最小值之间的差值

时间:2018-05-16 17:48:32

标签: sql sqlite group-by max min

我的数据库包含第一列中的userID和某些操作的时间戳(登录或单击按钮)。第一条记录(userID,time)始终是用户登录,有时还有第二条记录,这意味着用户也点击了按钮 -​​ 但情况并非总是如此。永远不会有超过2行具有相同的用户ID。

"userID" "time"
"0" "1526474096000"
"1" "1526474097000"
"2" "1526474098000"
"3" "1526474099000"
"4" "1526474100000"
"1" "1526474106000"
"0" "1526474107000"

例如,此处只有ID为0和1的用户点击了该按钮 我想计算时间差的直方图(或其他一些近似值),因为我的RAM中有太多用户为每个用户导入时差。
我的SQL查询看起来像这样(n是一些直方图bin大小):

SELECT COUNT(*), (MAX(time)-MIN(time)/n) as time_difference 
FROM table_name  
GROUP BY userID, time_difference

它不起作用,因为“GROUP BY子句中不允许使用聚合函数”。

2 个答案:

答案 0 :(得分:1)

你想这样做吗?

SELECT userID, (MAX(time)-MIN(time)/n) as time_difference 
FROM table_name  
GROUP BY userID 

答案 1 :(得分:1)

只需使用子查询。我不完全确定您要使用的是什么' / n',但这至少可以解决您的语法错误。

SELECT time_Difference,
       count(*)
  FROM (SELECT (MAX(time)-MIN(time)/n) as time_difference 
          FROM table_name  
         GROUP 
            BY userID
       ) TMP
 GROUP
    BY time_difference;