ежегодно подсчитывать общее количество людей, которые часто заказывают, по крайней мере, один раз в месяц

0

Я пытаюсь подсчитать ежегодное общее число людей, которые активно заказывают по меньшей мере один раз в месяц. но он возвращает 0.

Пытаться:

SELECT COUNT(DISTINCT(o.CreatedBy)) FROM orders o 
WHERE 
(o.CreatedDate >= '2017-02-01' AND o.CreatedDate < '2017-03-01') AND 
(o.CreatedDate >= '2017-03-01' AND o.CreatedDate < '2017-04-01') AND
(o.CreatedDate >= '2017-04-01' AND o.CreatedDate < '2017-05-01') AND
(o.CreatedDate >= '2017-05-01' AND o.CreatedDate < '2017-06-01') AND
(o.CreatedDate >= '2017-06-01' AND o.CreatedDate < '2017-07-01') AND
(o.CreatedDate >= '2017-07-01' AND o.CreatedDate < '2017-08-01') AND
(o.CreatedDate >= '2017-08-01' AND o.CreatedDate < '2017-09-01') AND
(o.CreatedDate >= '2017-09-01' AND o.CreatedDate < '2017-10-01') AND
(o.CreatedDate >= '2017-10-01' AND o.CreatedDate < '2017-11-01') AND
(o.CreatedDate >= '2017-11-01' AND o.CreatedDate < '2017-12-01') AND
(o.CreatedDate >= '2017-12-01' AND o.CreatedDate < '2018-01-01') AND
(o.CreatedDate >= '2018-01-01' AND o.CreatedDate < '2018-02-01') AND
(o.CreatedDate >= '2018-02-01' AND o.CreatedDate < '2018-03-01') 
  • 0
    ХОРОШО. Так что же случилось, когда вы попробовали это? И какие данные вы в него вложили? Вы должны правильно описать свою проблему. Это очень расплывчато.
  • 0
    он возвращает 0, это логическая ошибка, я могу видеть записи в базе данных, но выше запрос возвращает 0.
Теги:

1 ответ

1
Лучший ответ

Попробуй это:

SELECT COUNT(DISTINCT A.CreatedBy) 
FROM
  (SELECT O.CreatedBy, COUNT(DISTINCT DATE_FORMAT(O.CreatedDate ,'%Y-%m')) 
  noActiveMonths
  FROM orders O
  GROUP BY O.CreatedBy) A
WHERE A.noActiveMonths=(TIMESTAMPDIFF(MONTH,
SELECT MIN(A.CreatedDate) FROM orders, 
SELECT MAX(A.CreatedDate) FROM orders)+1);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню