CSV-файл содержит «user_ids» и «order_dates».У пользователя может быть более 1 даты заказа, но не в тот же день.Определите общее количество заказов, размещенных новыми пользователями в течение первых 29 дней использования продукта.Самая ранняя запись заказа пользователя = день 1.
Пример: пользователь совершает свою первую покупку 2018-01-01;любые дополнительные заказы, размещенные до 2018-01-29 включительно, подсчитываются.Любая история заказов после этого не должна рассматриваться.
Я использовал скрипту SQL и добился прогресса в получении количества заказов, возвращаемых мне.Однако возвращаемые результаты ограничены в течение 29 дней.
Условие между должен ограничивать запрос на отчет о продажах в течение первых 29 дней каждого пользователя, но это не так.
CREATE TABLE mytable
(
user_id int,
order_date Date
);
INSERT INTO mytable(user_id,order_date) VALUES (5963,'2018-01-01');
INSERT INTO mytable(user_id,order_date) VALUES (5963,'2018-01-29');
INSERT INTO mytable(user_id,order_date) VALUES (5963,'2018-01-30');
INSERT INTO mytable(user_id,order_date) VALUES (5962,'2018-01-01');
INSERT INTO mytable(user_id,order_date) VALUES (5962,'2018-02-25');
INSERT INTO mytable(user_id,order_date) VALUES (5962,'2018-04-03');
SELECT
user_id,
COUNT(order_date) AS total_orders
FROM
mytable
GROUP BY 1
having
ROUND(julianday(order_date) - julianday(MIN(order_date))) <= 29
order by 1 desc;
В вышеприведенном коде:
- user_id = 5963: возвращает 3 итоговых заказа, ожидается 2.
- user_id = 5962: возвращает 3общее количество заказов, ожидаемое 1