表结构如下:
CREATE TABLE `yd_link_record` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`ip` varchar(120) NOT NULL DEFAULT '' COMMENT '访问ip地址',
`spare_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '其他备用关联ID',
`link_from` tinyint(2) NOT NULL DEFAULT '0' COMMENT '访问终端1:iPhone,2:Android,3:公众号,4:微信小程序',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '统计时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='浏览记录表';此记录表会对每天的来访ip做记录,无论他的ip有没有重复,都会写入这个数据库中。且,会对来访设备进行备注。
现在要求如下:根据时间来筛选(默认当月1号到月尾)这个时间段内每个访问终端的uv总数,每天每个ip只被计算一次。三天时间了,实在想不出来解决方案,请各位帮帮忙……
CREATE TABLE `yd_link_record` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`ip` varchar(120) NOT NULL DEFAULT '' COMMENT '访问ip地址',
`spare_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '其他备用关联ID',
`link_from` tinyint(2) NOT NULL DEFAULT '0' COMMENT '访问终端1:iPhone,2:Android,3:公众号,4:微信小程序',
`create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '统计时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COMMENT='浏览记录表';此记录表会对每天的来访ip做记录,无论他的ip有没有重复,都会写入这个数据库中。且,会对来访设备进行备注。
现在要求如下:根据时间来筛选(默认当月1号到月尾)这个时间段内每个访问终端的uv总数,每天每个ip只被计算一次。三天时间了,实在想不出来解决方案,请各位帮帮忙……
比如说我一个ip在4月2号的时候访问了10次,但因为这10条数据是在那天的24小时以内的,我的ip查出来的时候就只能是一条,这个sql语句怎么写?
select
ip,date(create_time),link_from,count(0)
from yd_link_record where create_time>'2018-05-01' and create_time<'2018-06-01'
group by ip,date(create_time),link_from
order by date(create_time) desc;
就可以统计到每个ip每天访问了多少次。查询出来的结果每个ip每天只有1条的
这样写,好像解决了这个问题,不知道是不是……结果集如下:
link_from counts link_day
1 2 2018-06-01
2 2 2018-06-01
1 1 2018-06-02