我正在寫一個查詢,它將從日誌表中獲取結果,從而概述有多少訪問者登錄了我網頁以指定的時間間隔,考慮到他們的實際登錄時間(login_time,logout_time)和輸入的GROUP by參數。 (DAY(),HOUR()或MINUTE())MySQL查詢基於輸入時間間隔的GROUP BY和COUNT +考慮到兩個表列作爲區間
我已經扭轉了我的大腦在這個幾天的開關。真的需要一些有興趣的人的正面意見。
輸入
所以basicly什麼,我會在我的查詢輸入將是我想通過搜索什麼時間間隔。指定結果如何分組。 (DAY(),HOUR()或MINUTE())
實施例數據
ID| userID | login_time | logout_time
------------------------------------------------------
1 | 1 | 06.11.2010 16:57:16 | 06.11.2010 16:34:11
2 | 2 | 06.11.2010 16:47:11 | 06.11.2010 19:55:15
3 | 3 | 06.11.2010 16:33:16 | 06.11.2010 16:53:33
4 | 4 | 06.11.2010 16:13:25 | 06.11.2010 18:54:54
5 | 5 | 06.11.2010 16:02:16 | 06.11.2010 16:34:11
6 | 6 | 06.11.2010 16:00:11 | 06.11.2010 17:55:19
7 | 6 | 06.11.2010 19:00:11 | 06.11.2010 22:55:19
8 | 6 | 06.11.2010 20:00:11 | 06.11.2010 23:55:19
9 | 6 | 06.11.2010 20:00:11 | 06.11.2010 21:55:19
9 | 6 | 06.11.2010 09:00:11 | 06.11.2010 10:00:19
首選結果
示例輸入:2010年6月11日之間十六點三十分00秒和06.11.2010 16:35:00和分組由MINUTE()
Count | Date
---------------------------
5 | 06.11.2010 16:30:00
5 | 06.11.2010 16:31:00
5 | 06.11.2010 16:32:00
4 | 06.11.2010 16:33:00
5 | 06.11.2010 16:34:00
3 | 06.11.2010 16:35:00
示例輸入:2010年6月11日00:30:00和2010年6月11日之間23時三十五分00秒和HOUR分組()
Count | Date
---------------------------
1 | 06.11.2010 09:00:00
1 | 06.11.2010 10:00:00
- > PS:我不如果有間隔缺失(例如,無數據)
6 | 06.11.2010 16:00:00
3 | 06.11.2010 17:00:00
2 | 06.11.2010 18:00:00
2 | 06.11.2010 19:00:00
3 | 06.11.2010 20:00:00
3 | 06.11.2010 21:00:00
2 | 06.11.2010 22:00:00
1 | 06.11.2010 23:00:00
也許你可以說明一個合適的,有效的查詢,將產生預期的結果我有什麼想法?暫時我不會將這些混亂的代碼從這篇文章中排除出去。
如果允許多個步驟,這將是我的承擔。 1.創建一個包含MIN(login_time)和MAX(logout_time)之間所有分鐘的分鐘表。 2.在輸入表和INNER JOIN temptable ON temptable.datetime BETWEEN input.login_time AND input.logout_time之間創建一個INNER JOIN。 3.按可能的日期時間分組。 – 2010-11-06 18:32:41