Всем хорошего дня. Столкнулся с такой задачей - подсчитать количество клиентов, у которых были заказы каждый день за последний месяц. Есть таблица orders, в ней есть колонки order_id, created(дата создания заказа, формат datetime ) и user_id.
Как сделать так, чтобы в расчет брались заказы только за последний месяц я понял ( мой неполный запрос будет ниже )
А как сделать так, чтобы в выводе учитывались только клиенты, которые делали заказ каждый день ?
Текущий код:
SELECT count(user_id)
FROM orders
WHERE DATE(created) >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
SELECT user_id, count(distinct created)
FROM orders
WHERE created > DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY) -- get last 30 day orders
GROUP BY user_id
HAVING count(distinct created) = 30 -- check user have orders in 30 different days
;
SELECT
user_id, COUNT(distinct created)
FROM orders
WHERE created > DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)
GROUP BY user_id
HAVING
COUNT(distinct created) = DATEDIFF(CURRENT_DATE, DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH));