我有下表
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
答案 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年的方法