Mysql 每年统计每月至少一次频繁订购的用户总数

Mysql 每年统计每月至少一次频繁订购的用户总数,mysql,Mysql,我试图计算一个月内至少一次主动订购的年度总人数。 但它返回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.Cr

我试图计算一个月内至少一次主动订购的年度总人数。 但它返回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') 
从订单o中选择计数(不同的(o.CreatedBy))
哪里
(o.CreatedDate>='2017-02-01'和o.CreatedDate<'2017-03-01')和
(o.CreatedDate>='2017-03-01'和o.CreatedDate<'2017-04-01')和
(o.CreatedDate>='2017-04-01'和o.CreatedDate<'2017-05-01')和
(o.CreatedDate>='2017-05-01'和o.CreatedDate<'2017-06-01')和
(o.CreatedDate>='2017-06-01'和o.CreatedDate<'2017-07-01')和
(o.CreatedDate>='2017-07-01'和o.CreatedDate<'2017-08-01')和
(o.CreatedDate>='2017-08-01'和o.CreatedDate<'2017-09-01')和
(o.CreatedDate>='2017-09-01'和o.CreatedDate<'2017-10-01')和
(o.CreatedDate>='2017-10-01'和o.CreatedDate<'2017-11-01')和
(o.CreatedDate>='2017-11-01'和o.CreatedDate<'2017-12-01')以及
(o.CreatedDate>='2017-12-01'和o.CreatedDate<'2018-01-01')以及
(o.CreatedDate>='2018-01-01'和o.CreatedDate<'2018-02-01')以及
(o.CreatedDate>='2018-02-01'和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);

好啊那么,当你尝试它时发生了什么?你在里面放了什么数据?你需要恰当地描述你的问题。这是非常模糊的。它返回0,这是一个逻辑错误,我可以看到数据库中的记录,但上面的查询返回0。