我正在收集网站访问者的某些操作。当我记录动作时,我会存储他们正在使用的用户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
结果显示,用户20记录了Chrome 5次,用户156记录了127次,用户160记录了269次。相反,我需要的是Chrome使用的总次数,但每个用户只记录一次,这将使其仅被独特用户使用总量的3倍。
这是我想要的回复:
browser|browser_count
---------------------
Chrome | 3
Firefox| 2
IE | 2
Safari | 2
Opera | 1
答案 0 :(得分:1)
解决方案直接来自Can I use COUNT() and DISTINCT together?
SELECT browser, COUNT(DISTINCT user)
FROM tracking
GROUP BY browser;
答案 1 :(得分:1)
Chrome使用的总次数,但每位用户只记录一次应该是按浏览器分组的不同用户数:
yes
编辑:删除括号
答案 2 :(得分: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