Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何计算每天具有不同IP地址的行数?_Mysql - Fatal编程技术网

Mysql 如何计算每天具有不同IP地址的行数?

Mysql 如何计算每天具有不同IP地址的行数?,mysql,Mysql,我如何计算每天在我的网站上有多少个独特的地址? 我的桌子看起来像这样: 行名称:id、名称、实体、ip地址、日期 1、“巴尔杜尔”、“实体”、“85.221.18.251”、“2012-01-09 17:32:52” 2、“巴尔杜尔”、“实体”、“85.221.18.251”、“2012-01-09 17:32:57” 3、“巴尔杜尔”、“实体”、“85.221.18.252”、“2012-01-09 17:33:01” 4、“巴尔杜尔”、“实体”、“85.221.18.253”、“2012-0

我如何计算每天在我的网站上有多少个独特的地址? 我的桌子看起来像这样:

行名称:id、名称、实体、ip地址、日期

1、“巴尔杜尔”、“实体”、“85.221.18.251”、“2012-01-09 17:32:52” 2、“巴尔杜尔”、“实体”、“85.221.18.251”、“2012-01-09 17:32:57” 3、“巴尔杜尔”、“实体”、“85.221.18.252”、“2012-01-09 17:33:01” 4、“巴尔杜尔”、“实体”、“85.221.18.253”、“2012-01-10 17:33:12” 5、“芒果”、“实体”、“85.221.18.257”、“2012-01-10 17:32:52” 6、“巴尔杜尔”、“实体”、“85.221.18.251”、“2012-01-10 17:32:57” 7,“芒果”,“实体B”,“85.221.18.253”,“2012-01-11 17:33:01” 8、“芒果”、“实体”、“85.221.18.251”、“2012-01-11 17:33:12” 9、“芒果”、“实体”、“85.221.18.253”、“2012-01-11 17:32:52” 10.“巴尔杜尔”、“实体B”、“85.221.18.255”、“2012-01-11 17:32:57” 11,“芒果”,“实体B”,“85.221.18.254”,“2012-01-11 17:33:01” 12,“芒果”,“实体”,“85.221.18.251”,“2012-01-12 17:33:12”

我的想法是这样的:

SELECT date, COUNT(ip)
FROM mytable
GROUP BY date

这只会给我计数为1的行。

您只会得到计数为1的行,因为您的大多数日期值本质上是唯一的,因为它们也有一个时间分量。因此,您最初的语句试图按完整的日期时间分组,但通常每秒不会有很多命中率

使用函数
DATE()
去除时间部分,仅获取日期部分,并在
COUNT()
中添加
DISTINCT
,仅获取每天唯一的IP

SELECT 
  DATE(`date`) AS ipdate, 
  COUNT(DISTINCT ip) 
FROM mytable
GROUP BY ipdate
要获取每天的总(非唯一)点击量,请省略
不同的

SELECT 
  DATE(`date`) AS ipdate, 
  COUNT(ip) 
FROM mytable
GROUP BY ipdate

您不是按日期(意味着每天一个条目)分组,而是按实际的时间戳分组,在您的情况下,时间戳为一秒。您必须应用
date
函数从中提取实际日期

另一方面,添加
DISTINCT
关键字以实际计算不同的IP并忽略重复条目

SELECT DATE( `date` ), COUNT( DISTINCT ip_address )
  FROM mytable
  GROUP BY DATE( `date` )
尝试:


@史蒂文可能会检查一些打字错误。它在本地mysql数据库中运行良好,返回4行。
SELECT DATE(date), COUNT(ip) FROM mytable GROUP BY DATE(date),ip