在MYSQL中使用Group By,而在另一列上使用distinct

时间:2011-09-07 01:42:22

标签: mysql sql

我有一张表存储我发送到其他网站的每次点击。它包含我发送点击的网站的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`)

但显然语法不起作用。

到目前为止,我一直无法在我的研究中找到解决方案。我开始认为子查询可能是答案 - 如果有人有任何建议或意见,我将非常感激。

由于

1 个答案:

答案 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`