Запросить количество клиентов, которые успешно заказали второй раз в течение 30 дней - PullRequest
0 голосов
/ 07 января 2020

Напишите запрос MySQL, чтобы получить количество отдельных пользователей, которые сделали свой первый успешный заказ в апреле 2016 года и сделали свой второй успешный заказ в течение 30 дней с даты их первого заказа.

Таблица заказов содержит столбцы

Order_id
Customer_id
Order_Timestamp
Order_status

Order_status может принимать значения «success» или «fail»

1 Ответ

0 голосов
/ 07 января 2020

Вот один из способов сделать это с коррелированными подзапросами и exists:

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
    )

Первый коррелированный подзапрос фильтрует первый заказ на клиента и следующие условия гарантируют его принадлежность ожидаемому месяцу. ; второй подзапрос в условии exists гарантирует, что один и тот же клиент имел как минимум один заказ в течение следующего месяца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...