MySQL:找到在网站上注册并在当天购买的用户

MySQL:找到在网站上注册并在当天购买的用户,mysql,sql,Mysql,Sql,我试图捕获在我们网站上注册的用户数量,然后在同一天购买一些东西。在我的问题上有点不知所措。它正在返回结果,但经过仔细检查,这些是懒汉,结果不正确 我有两张桌子:顾客和采购。这两个表都有客户id和日期,客户表的日期为创建日期,采购表的日期为修改日期 基本上,我希望每天获得在customer_id表中创建的用户_id的合计计数,然后在当天的purchase表中显示purchase*注意:还有一个条件,我不想包括从customer_id 1购买的物品。customer_id 1是一个测试帐户,有时用于

我试图捕获在我们网站上注册的用户数量,然后在同一天购买一些东西。在我的问题上有点不知所措。它正在返回结果,但经过仔细检查,这些是懒汉,结果不正确

我有两张桌子:顾客和采购。这两个表都有客户id和日期,客户表的日期为创建日期,采购表的日期为修改日期

基本上,我希望每天获得在customer_id表中创建的用户_id的合计计数,然后在当天的purchase表中显示purchase*注意:还有一个条件,我不想包括从customer_id 1购买的物品。customer_id 1是一个测试帐户,有时用于在站点上进行测试目的的购买

这就是我所尝试的:

select 
    date_format(c.`date_created`, '%Y-%m-%d') as day_date
    ,x.same_day_purchase

from `customer` c

left join (
    select 
        p.`customer_id`
        ,p.`date_modified`
        ,sum(if(p.`date_modified` >= cp.`date_created`,1,0)) as same_day_purchase
    from purchase p
    inner join `customer` cp on p.`customer_id` = cp.`customer_id` and p.`customer_id`<>1

group by cp.`date_created`
            ) x on c.`customer_id` = x.`customer_id` and x.`customer_id`<>1


where (c.`date_created` >= '2011/09/01' and c.`date_created` < '2014/05/14')
group by day_date
所以我想要的结果是:

2011/09/01-3

2011/09/02-16

等等

所以在2011年9月1日,3名用户来到我们的网站注册,然后在同一天购买了一些东西。第二天,我们有16个人新注册的客户购买产品,等等


谢谢大家!

以下是您的出发点:

select date(date_created)
       ,count(distinct c.customer_id)
from customer c
join purchase p using (customer_id)
where DATEDIFF(p.date_modified,c.date_created) = 0
       and c.date_created between '2011/09/01' and now()
       and c.customer_id <> 1
group by date(c.date_created)

以下是您的出发点:

select date(date_created)
       ,count(distinct c.customer_id)
from customer c
join purchase p using (customer_id)
where DATEDIFF(p.date_modified,c.date_created) = 0
       and c.date_created between '2011/09/01' and now()
       and c.customer_id <> 1
group by date(c.date_created)

以下是您的出发点:

select date(date_created)
       ,count(distinct c.customer_id)
from customer c
join purchase p using (customer_id)
where DATEDIFF(p.date_modified,c.date_created) = 0
       and c.date_created between '2011/09/01' and now()
       and c.customer_id <> 1
group by date(c.date_created)

以下是您的出发点:

select date(date_created)
       ,count(distinct c.customer_id)
from customer c
join purchase p using (customer_id)
where DATEDIFF(p.date_modified,c.date_created) = 0
       and c.date_created between '2011/09/01' and now()
       and c.customer_id <> 1
group by date(c.date_created)
你可以试试这个

SELECT DATE(c.date_created) AS `date`
       ,COUNT(DISTINCT c.customer_id) AS registered_customers_who_bought
FROM customer AS c
JOIN purchase AS p
  ON c.customer_id = p.customer_id
    AND DATE(c.date_created) = DATE(p.date_modified)
WHERE (c.`date_created` >= '2011/09/01' and c.`date_created` < '2014/05/14')
GROUP BY DATE(c.date_created)
你可以试试这个

SELECT DATE(c.date_created) AS `date`
       ,COUNT(DISTINCT c.customer_id) AS registered_customers_who_bought
FROM customer AS c
JOIN purchase AS p
  ON c.customer_id = p.customer_id
    AND DATE(c.date_created) = DATE(p.date_modified)
WHERE (c.`date_created` >= '2011/09/01' and c.`date_created` < '2014/05/14')
GROUP BY DATE(c.date_created)
你可以试试这个

SELECT DATE(c.date_created) AS `date`
       ,COUNT(DISTINCT c.customer_id) AS registered_customers_who_bought
FROM customer AS c
JOIN purchase AS p
  ON c.customer_id = p.customer_id
    AND DATE(c.date_created) = DATE(p.date_modified)
WHERE (c.`date_created` >= '2011/09/01' and c.`date_created` < '2014/05/14')
GROUP BY DATE(c.date_created)
你可以试试这个

SELECT DATE(c.date_created) AS `date`
       ,COUNT(DISTINCT c.customer_id) AS registered_customers_who_bought
FROM customer AS c
JOIN purchase AS p
  ON c.customer_id = p.customer_id
    AND DATE(c.date_created) = DATE(p.date_modified)
WHERE (c.`date_created` >= '2011/09/01' and c.`date_created` < '2014/05/14')
GROUP BY DATE(c.date_created)

这样做了,我想我真的过度思考了这个查询-这个简单得多,谢谢你这么做了,我想我真的过度思考了这个查询-这个简单得多,谢谢你这么做了,我想我真的过度思考了这个查询-这个简单得多,谢谢你这么做了,我想我真的过度思考了这个查询-这个简单得多,谢谢