我試圖從我的網絡服務器分析一些網絡日誌。我把上週的所有日誌都放到了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