Mysql - 计算日期间隔中的行

时间:2016-03-17 00:54:56

标签: mysql

我有下表

customerID | orderID | orderDate
----------------------------------
1          |  67     | 2015-12-15
1          |  66     | 2015-10-20
1          |  65     | 2015-1-7
2          |  64     | 2014-9-6
2          |  63     | 2014-7-8
3          |  62     | 2015-1-15

我需要确定2014年和2015年12个月内至少有3个不同customerID s的所有orderID

2 个答案:

答案 0 :(得分:0)

嗯。你可以这样做:

select distinct customerId
from t
where 3 <= (select count(*)
            from t t2
            where t2.customerId = t.customerId and
                  t2.date >= t.date and
                  t2.date < date_add(t.date, interval 12 month)
           );

(customerId, date)上的索引有助于提升效果。并且,您可能需要在子查询中使用count(distinct OrderId),但根据您的示例数据,这似乎并不合适。

答案 1 :(得分:0)

试试这个:

SELECT customerID, order_count FROM (SELECT customerID, COUNT(DISTINCT orderID) AS 
order_count WHERE YEAR(orderDate) = 2014 GROUP BY customerID) AS 
table_orders WHERE order_count >= 3

您可以更改第一个WHERE clausule以更改日期范围,我建议您计算所有2014年的方法