Php 在MySql中按日期查找新客户和重复客户

Php 在MySql中按日期查找新客户和重复客户,php,mysql,sql,Php,Mysql,Sql,我有一个访问表,其中包含用户id和访问列。我想知道这个月每天有多少新客户和回头客 user_id visited_at -------------------------------------------------------------------------- 1750 2015-01-28 12:38:59 1920 2015-01-19 17:20:20 1009 2015-01-17 18:20

我有一个访问表,其中包含用户id和访问列。我想知道这个月每天有多少新客户和回头客

user_id      visited_at                

--------------------------------------------------------------------------

1750        2015-01-28 12:38:59
1920        2015-01-19 17:20:20
1009        2015-01-17 18:20:12
1920        2015-01-17 15:10:10
1080        2015-01-13 20:18:41
1920        2014-04-04 10:31:15
1750        2013-10-04 10:39:20
2015年1月,用户1750和1920访问了同一地点,因此总重复客户数为2。2015年4月,用户1750、1920和1080访问了同一地点,因此总重复客户数为3。输出应该是这样的

October 2013

Month               New        Repeat
----------------------------------------------
2013-10-04          1          0

April 2014

Month               New        Repeat
----------------------------------------------
2014-04-04          1          0

January 2015

Month               New        Repeat
----------------------------------------------
2015-01-13          1          0
2015-01-17          1          1
2015-01-19          0          1
2015-01-28          0          1

乔普拉。我确实误解了你在评论中提出的问题。这与按月计算的结构非常相似,只是聚合是按日期计算的:

select date(v.visited_at),
       count(case when v.visited_at = vv.minva then user_id end) as num_new_users,
       (count(distinct user_id) - count(case when v.visited_at = vv.minva then user_id end)
       ) as num_repeat_users
from visits v join
     (select user_id, min(visited_at) as minva
      from visits t
      group by user_id
     ) vv
     on v.user_id = vv.user_id
group by date(v.visited_at)
order by date(v.visited_at);

重复
客户部分是可以的,但在什么参考点,您认为某人是新的。有没有列为
place
?太棒了。再次非常感谢。谢谢。如果同一个用户在同一个月内来,这是不起作用的。@Chopra。在这一点上,也许你应该问另一个问题。我认为这个答案与你的问题是一致的。它将一个月内的两次访问视为重复访问和新访问。