我的数据库包含第一列中的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子句中不允许使用聚合函数”。
答案 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;