【发布时间】:2013-03-04 03:03:05
【问题描述】:
我需要找出每天唯一访客的数量,我有这样的数据库:
UID clicks date
6046 9 2013-03-06
6449 7 2013-03-06
6450 41 2013-03-06
664 2 2013-03-07
2432 36 2013-03-07
3246 11 2013-03-07
6031 52 2013-03-07
现在我需要找到每天的唯一身份访问者数量。我发现这一点以及当天的点击次数。所以查询是这样的:
SELECT date,SUM(clicks) as new_clicks,COUNT(DISTINCT uID) as unique_clicks
FROM uc_user
WHERE date <='2013-03-15' GROUP BY date;
但是在这里我得到了错误的结果。计数与我使用
计算的相同间隔的计数不同SELECT date, COUNT(DISTINCT uID ) AS unique_clicks
FROM uc_user
WHERE date <= '2013-03-15'
GROUP BY date
LIMIT 0 , 30
这些查询之间有什么区别,哪一个对于显示唯一身份访问者的数量是正确的?
其实我在 PHP 中的实际查询是这样的:
SELECT date,SUM(clicks) as new_clicks,COUNT(uID) as unique_clicks
FROM currencyclick_user
WHERE date BETWEEN '$from' AND '$to'
GROUP BY date
和
SELECT SUM(clicks) as total_new_clicks,
COUNT(DISTINCT uID) as total_new_uniqueclicks
FROM currencyclick_user
WHERE date BETWEEN '$from' AND '$to'
但对于相同的范围,它显示不同的值。我的意思是总和查询显示的总数比我在第一个查询中添加计数得到的值错误。
【问题讨论】:
-
您的用户 ID 计数在两个查询中看起来相同。它应该可以正常工作。您发布的查询是导致问题的实际查询,还是简化的查询?
-
它应该像 2013-03-06 的 3 和 2013-03-07 的 4 因为所有的 id 都是唯一的。如果一个 UID 重复,则不应添加。也就是说,如果一个 664 的 ID 在 2013-03-06 中有条目,则不应考虑在接下来的任何一天计数
-
我也发现了。看这里,sqlfiddle.com/#!2/8cfb2/3(除非你更新记录)
-
你能显示上表的预期输出吗?