2017-02-14 65 views
-1

我在這裏有一個有趣的查詢。我有一張表,它存儲訪客的ippage_id以及時間戳(date)。我想指望每天的遊客量爲每page_id這樣我就可以採取輸出,並計算其page_id的趨勢(每天)MySQL:我如何計算每天每頁訪問量?

visitors_counter看起來是這樣的:

id|page_id | ip | date 
1 | 37 |1.1.1.1| 2017-02-10 14:03:16 
2 | 38 |1.2.1.1| 2017-02-10 11:04:16 
3 | 39 |1.1.3.1| 2017-02-10 16:05:16 
4 | 37 |1.5.1.1| 2017-02-10 17:08:16 
5 | 37 |1.1.1.1| 2017-02-10 19:07:16 

而我想實現會是這樣的:

id|page_id |visitors | date 
1 | 37 |3  | 2017-02-10 14:03:16 
2 | 38 |1  | 2017-02-10 11:04:16 
3 | 39 |1  | 2017-02-10 16:05:16 

到目前爲止,我已經能夠與計算每天的獨立用戶訪問量

SELECT DATE(date) Date, COUNT(DISTINCT page_id) uniqueperday FROM visitors_counter GROUP BY DATE(date)

我知道IM接近,但它不是我想要什麼很,因爲我不知道哪個page_id是最熱門的那些

感謝

回答

1

你的結果,你應該通過使用組和count(*)(你有37頁相同的id兩次,想造成3)

SELECT DATE(date) Date, page_id, COUNT(*) visitperday 
FROM visitors_counter 
GROUP BY DATE(date), page_id 

othewise的Giorgios是正確的一個

+0

這就是我所需要的。作爲一個額外的問題,是否有可能不僅每天計算而且每X小時計算一次?可以說每3小時就能得到每頁的訪問量? – Raulnd

+0

您應該更改範圍時間...但這是另一個問題.. – scaisEdge

1

只需將GROUP BY子句中添加page_id

SELECT DATE(date) Date, page_id, COUNT(DISTINCT ip) uniqueperday 
FROM visitors_counter 
GROUP BY DATE(date), page_id 

以上查詢返回每頁每天訪問的唯一ip次數。

0

您可以使用頁面和日期的聚合來查找每天每頁不同訪問者的數量。另外,使用用戶變量來生成序列號。

set @id := 0; 

select @id = @id + 1 id, 
    page_id, 
    count(distinct ip) visitors, 
    min(date) 
from visitors_counter 
group by page_id, DATE(date) 
order by visitors desc, page_id;