mysql - 在MYSQL中使用Group By,同时在另一列上使用distinct

标签 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`)

但显然这种语法不起作用。

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

谢谢

最佳答案

如果我理解正确的话,我想你想要这样的东西:

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`

关于mysql - 在MYSQL中使用Group By,同时在另一列上使用distinct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7328013/

相关文章:

mysql - 计数字段选择

mysql - 改善缓慢的 Mysql 查询

python - 如何将多行信息插入到mysql数据库的不同行中?

mysql - 如何在 Windows Server 2012 R2 上远程连接到 MySQL

mysql - 选择列值相差超过两年的行

mysql - 为什么 INNODB 批量插入会导致自动增量主键跳过值?

mysql - 从表中插入和删除行

SQL累进和

c# - LINQ:Include 子句导致两个左连接,而本应有一个

sql - 使用 Bookshelf 对 Postgres JSONB 数组元素执行查询