過去幾個小時,我一直在撞牆,試圖讓這個單一的查詢工作,但沒有成功。使用DATE_FORMAT別名的MySQL子查詢計數
我有一個名爲viewer_log的表。
每一行都是一個帶有session_id和時間戳記的瀏覽量。
我有麻煩格式化時間戳爲一天,按當天分組,但是然後計算每天UNIQUE會話的數量。
到目前爲止,該查詢(也花了很長的時間去工作)是:
SELECT day, COUNT(*) as unique_sessions from (SELECT COUNT(viewer_session_id) AS sessions, DATE_FORMAT(timestamp, "%Y-%m-%d") AS day FROM viewer_log GROUP BY `viewer_session_id` HAVING day='2011-03-23') AS sessions;
你會發現這一天是硬編碼,讓
mysql> SELECT day, COUNT(*) as unique_sessions from (SELECT COUNT(viewer_session_id) AS sessions, DATE_FORMAT(timestamp, "%Y-%m-%d") AS day FROM viewer_log GROUP BY `viewer_session_id` HAVING day='2011-03-23') AS sessions;
+------------+-----------------+
| day | unique_sessions |
+------------+-----------------+
| 2011-03-23 | 21 |
+------------+-----------------+
我想擴大這些結果,而不必指定一天,這是我遇到問題的地方,無法在互聯網上找到答案......我確信它在那裏,不知道我在找什麼。
EG:
+------------+-----------------+
| day | unique_sessions |
+------------+-----------------+
| 2011-03-21 | 14 |
| 2011-03-22 | 11 |
| 2011-03-23 | 21 |
+------------+-----------------+
我有很多的麻煩移動過去的這一點上,我試圖與它自身的拷貝加入表,但通常碰到一個未知的列名或結果我認爲應該被顯示出來是錯誤的:
mysql> select DATE_FORMAT(v.timestamp, "%Y-%m-%d") AS date, count(sessions) as rows from (SELECT COUNT(viewer_session_id) AS sessions, DATE_FORMAT(timestamp, "%Y-%m-%d") AS date FROM viewer_log GROUP BY viewer_session_id) AS s JOIN viewer_log v ON (s.date=date) GROUP BY date;
+------------+--------+
| date | rows |
+------------+--------+
| 0000-00-00 | 2551 |
| 0000-00-00 | 20408 |
| 0000-00-00 | 20408 |
| 0000-00-00 | 5102 |
| 0000-00-00 | 2551 |
| 0000-00-00 | 2551 |
| 0000-00-00 | 63775 |
| 0000-00-00 | 211733 |
| 0000-00-00 | 53571 |
| 0000-00-00 | 53571 |
| 0000-00-00 | 53571 |
| 0000-00-00 | 51020 |
| 0000-00-00 | 48469 |
| 0000-00-00 | 91836 |
| 0000-00-00 | 86734 |
| 0000-00-00 | 33163 |
| 0000-00-00 | 45918 |
| 0000-00-00 | 28061 |
| 0000-00-00 | 86734 |
| 0000-00-00 | 76530 |
| 0000-00-00 | 53571 |
| 0000-00-00 | 33163 |
+------------+--------+
22 rows in set, 1 warning (0.63 sec)
謝謝!我最終做的是: – ilovett 2011-03-25 17:03:54