我试图从我的网络服务器分析一些网络日志。我把上周的所有日志都放到了mysql数据库中,我正在分析这些日志。MySQL:计算一个范围内的项目数
我已经生成的sessionID
个表,并使用此mysql命令在会话的长度:
SELECT
Log_Analysis_RecordsToSesions.sessionID,
ABS(TIMEDIFF(
MIN(Log_Analysis_Records.date),
MAX(Log_Analysis_Records.date)
)) as session_length
FROM
Log_Analysis_RecordsToSesions,
Log_Analysis_Records
WHERE
Log_Analysis_RecordsToSesions.recordID=Log_Analysis_Records.recordID
GROUP BY
sessionID;
-
+-----------+----------------+
| sessionID | session_length |
+-----------+----------------+
| 1 | 2031.000000 |
| 2 | 1954.000000 |
| 3 | 401.000000 |
...
我想现在要做的就是修改语句,使它会产生这样的事情:
Range (time) Number of Sessions
0 to 2 10
2 to 4 4
4 to 6 60
...
该范围将是一个固定时间量,我想统计该范围内的会话数量。我的第一个想法是用php来循环遍历它,但这看起来非常耗时并且非常糟糕。有没有办法在MySQL中做到这一点?
你能解释一下wh在第二行是干什么的? – sixtyfootersdude 2010-11-15 09:48:35
它将'group by'中使用的显示值与''to''和'group by'中使用的下一个组合(+ 2000ms)连接起来。 '* 2'用于显示:因为,例如,401和1500 div 2000是'0'(group by中使用的值),2031 div 2000是'1' - 另一个组。 – 2010-11-16 04:59:12