php - 在 MySql 中按日期查找新客户和回头客

标签 php mysql sql

我有一个包含 user_id 和visited_at 列的访问表。我想知道这个月每天有多少新客户和回头客。

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);

关于php - 在 MySql 中按日期查找新客户和回头客,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29498674/

相关文章:

php - Paypal API 直接 : buyer to seller payment(s)

php - Insert on duplicate key update 没有更新,而是插入新值

c# - ASP.Net 如何从 gridview C# 更新数据库

sql - Rails,迭代组查询的结果

javascript - Yii- 客户端验证不适用于 CActiveForm

php - 创建个性化下载链接

嵌套索引的 MySQL 性能

javascript - 在 php 和 jquery 动态创建的表行中选择一个选项对应的数据加载另一个选择选项

java - 数据库访问拒绝连接问题

mysql - 使用所有数据库中用户表中的字段