У меня есть таблица с заказами и следующие поля:
create table orders2 (
orderID int,
customerID int,
date DateTime,
amount int)
engine=Memory;
Каждый клиент может сделать 0 или много заказов каждый день. Мне нужно создать запрос SQL, который будет показывать для каждого клиента, сколько заказов он / она сделал в течение 3 дней, начиная со дня, когда клиент сделал свой первый заказ.
Итак для каждого клиента запрос должен определить дату первого заказа, затем вычислить дату, которая будет через 3 дня после первой даты, затем отфильтровать строки, чтобы принимать только заказы с датами в данном диапазоне, и затем выполнить подсчет заказов (orderID) в этот период времени. На данный момент мне удалось просто определить дату первого заказа для каждого клиента.
SELECT
O.customerID,
O.date AS first_day,
COUNT(O.orderID) AS first_day_orders_num,
SUM(O.amount) AS first_day_amount
FROM orders2 AS O
INNER JOIN
(
SELECT
customerID,
MIN(date) AS first_date
FROM orders2
GROUP BY customerID
) AS I ON (O.customerID = I.customerID) AND (O.date = I.first_date)
GROUP BY
O.customerID,
O.date