Mysql 如何计算每天具有不同IP地址的行数?
我如何计算每天在我的网站上有多少个独特的地址? 我的桌子看起来像这样: 行名称: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” 我的想法是这样的: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
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