2015-06-20 70 views
2

我正在收集網站訪問者的某些操作。當我錄製動作時,我會存儲他們正在使用的用戶ID和瀏覽器。如何使用另一個唯一列獲取列數?

我想要統計每個瀏覽器的使用次數,但是如果有來自同一用戶的操作,它會每次收集同一個瀏覽器,所以當它爲每個瀏覽器計數時,我希望它僅爲每個用戶計數一次瀏覽器。

這是我的嘗試:

SELECT DISTINCT(user), browser, count(browser) AS browser_count 
FROM tracking 
GROUP BY user, browser 

這是它返回:

user|browser|browser_count 
-------------------------- 
20 |Chrome | 5 
156 |Chrome | 127 
156 |Firefox| 2 
156 |IE  | 2 
156 |Safari | 2 
160 |Chrome | 269 
160 |Firefox| 8 
160 |IE  | 4 
160 |Opera | 6 
160 |Safari | 4 

結果顯示,Chrome的用戶20,由用戶156記錄的5倍127倍,269而是用戶160次。相反,我需要的是Chrome使用的總次數,但僅爲每位用戶記錄一次,這將使其僅由獨特用戶總共使用3次。

這就是我想返回:

browser|browser_count 
--------------------- 
Chrome | 3 
Firefox| 2 
IE  | 2 
Safari | 2 
Opera | 1 

回答

1

總倍鉻被使用,但每個用戶只記錄一次應該是由瀏覽器分組的不同用戶的計數:

SELECT browser,COUNT(DISTINCT user) AS browser_count 
FROM tracking 
GROUP BY browser 

編輯:去除括號

0

嘗試以下,

Select browser, sum(counter) as browser_count from 
(
    SELECT DISTINCT(user) as user, browser, 1 as counter AS browser_count 
    FROM tracking 
    GROUP BY user, browser 
)T group by browser 

或者你應該嘗試,

Select browser, count(user) as browser_count from 
    (
     SELECT DISTINCT(user) as user, browser, 1 as counter AS browser_count 
     FROM tracking 
     GROUP BY user, browser 
    )T group by browser