Mysql 查询30天内第二次成功订购的客户数量

Mysql 查询30天内第二次成功订购的客户数量,mysql,sql,analytics,Mysql,Sql,Analytics,编写一个MySQL查询以获取不同用户的数量,这些用户在2016年4月第一次成功订购,并在第一次订购日期后30天内第二次成功订购 Orders表包含列 Order_id Customer_id Order_Timestamp Order_status 订单状态可以取值为“成功”或“失败”这里有一种方法可以使用相关的子查询执行此操作: 每个客户的第一个订单上的第一个相关子查询过滤器和以下条件确保它属于预期月份;exists条件中的第二个子查询确保同一客户在下个月内至少有一个订单。欢迎使用Stack

编写一个MySQL查询以获取不同用户的数量,这些用户在2016年4月第一次成功订购,并在第一次订购日期后30天内第二次成功订购

Orders表包含列

Order_id
Customer_id
Order_Timestamp
Order_status

订单状态可以取值为“成功”或“失败”

这里有一种方法可以使用相关的子查询执行此操作:


每个客户的第一个订单上的第一个相关子查询过滤器和以下条件确保它属于预期月份;exists条件中的第二个子查询确保同一客户在下个月内至少有一个订单。

欢迎使用StackOverflow。请阅读本指南,了解如何提问其他人可以有效帮助您的问题。存在后子查询中的1是什么。您能再解释一下吗?这样我就明白了。@shoaibsipai:exists只是为了检查是否存在与给定条件相对应的记录,子查询的实际结果将被丢弃。因此选择1。
select distinct o.customer_id
from orders o
where 
    o.order_timestamp = (
        select min(order_timestamp) from orders o1 where o1.customer_id = o.customer_id
    ) 
    and o.order_timestamp >= '2016-04-01' 
    and o.order_timestamp < '2016-05-01'
    and exists (
        select 1
        from orders o1
        where 
            o1.customer_id = o.customer_id 
            and o1.order_timestamp > o.order_timestamp
            and o1.order_timestamp <= o.order_timestamp + interval 1 month
    )