Я пытаюсь подсчитать ежегодное общее число людей, которые активно заказывают по меньшей мере один раз в месяц. но он возвращает 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')
Попробуй это:
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);