在MySQL中,我有一個查詢來計算我想要聚合的page_views表中的所有瀏覽器。這裏是我的查詢:COUNT(DISTINCT X)MySQL Query沒有給出我需要的結果
SELECT
Browser,
COUNT(*)
FROM page_views
WHERE PageID = 58
GROUP BY Browser;
賦予,例如:
Chrome 14 Firefox 17 Internet Explorer 9 Opera 5 Safari 3 -------------------- Total 48
這正是我想要的。它工作正常,速度很快。現在我想要分清IP地址,以便刪除多次查看該頁面的用戶。我在COUNT
添加DISTINCT
所以它看起來是這樣的:
SELECT
Browser,
COUNT(DISTINCT IPAddress)
FROM page_views
WHERE PageID = 58
GROUP BY Browser;
這看起來像它的工作原理,但在現實中,我不認爲它。在我的真實世界環境中,我在多個列上進行聚合,一個用於瀏覽器,一個星期幾,一個月等..所以這是一個查詢,但是不同的GROUP BY
。我怎麼注意到它可能不是我想要的結果是我的每個查詢都有一個不同的總數數字。通過瀏覽器彙總視圖提供48個總視圖,按星期幾提供45個總視圖,按月顯示50個總視圖。有些事不對。
此外,如果我做了一個簡單的SELECT COUNT(DISTINCT IPAddress) FROM page_views WHERE PageID = 58
我得到的其他聚合查詢總共少得多的頁面瀏覽量。
同樣,我想要的是上面提到的第一個查詢,但每個IPAddress只聚合一次,因此它基本上計算頁面的唯一查看者,而不是頁面的查看總數。
我在做什麼,或不正確地獲得我想要的結果?
謝謝。
是否'IPAddress'包含NULL值? –
@a_horse_with_no_name第 – user973195
這意味着相同的用戶使用不同的瀏覽器訪問該頁面,這是一個問題嗎? –