我有一张表存储我发送到其他网站的每次点击。它包含我发送点击的网站的ID,点击的日期时间,点击的IP地址以及IP地址来自的地区(IE:美国,加拿大,英国等)
当我试图查看当天从每个地区发送到网站的点击次数时,我会使用这样的查询......
SELECT `clicks_region`, COUNT(*) as TOTAL
FROM `clicks`
WHERE `clicks_to_websites_id` = '1'
AND DATE(`clicks_date`) = DATE('2011-08-30' )
GROUP BY `clicks_region`
现在我想做同样的查询但是限制它以便IP每天只计算一次
我的第一个想法是做这样的事情......
SELECT `clicks_region`, COUNT(*) as TOTAL
FROM `clicks`
WHERE `clicks_to_websites_id` = '1'
AND DATE(`clicks_date`) = DATE('2011-08-30' )
GROUP BY `clicks_region`
HAVING DISTINCT(`clicks_ip`)
但显然语法不起作用。
到目前为止,我一直无法在我的研究中找到解决方案。我开始认为子查询可能是答案 - 如果有人有任何建议或意见,我将非常感激。
由于
答案 0 :(得分:1)
如果我理解正确,我想你想要这样的事情:
SELECT `clicks_region`, COUNT(*) as TOTAL
FROM
(SELECT DISTINCT 'clicks_region', 'clicks_ip'
FROM 'clicks'
WHERE `clicks_to_websites_id` = '1'
AND DATE(`clicks_date`) = DATE('2011-08-30' )) x
GROUP BY `clicks_region`