我试图每个月按地区提供一个12个月的“休眠”客户视图(休眠=过去12个月没有下订单)。下面是脚本的一部分(减去必要的连接)。
select region, count(clientID)as TotalDormant
FROM clients
WHERE test_account = 'NO'
AND DATEDIFF(curdate(), last_order_date) > 365
GROUP BY 1
...返回
Region Total Dormant
ROW 500
US 1000
但是......因为curdate()
它只返回了今天(2015年9月17日)之前一直处于非活动状态的休眠客户。我需要它来返回我们过去11个月中每个月的休眠客户数量。
我需要做些什么才能按地区以12米为单位返回每个月的休眠数?
我已经尝试了inner join
,子查询等......但是他们都搞砸了甚至septembers数据(使用上面的基本查询这是准确的)。因此我决定将其删除,寻求建议,并从那里建立。
答案 0 :(得分:1)
使用 DATE_FORMAT 功能获取日期中的月份:
select region, count(clientID) as TotalDormant,
DATE_FORMAT(last_order_date,'%Y %m') AS dormantSince
FROM clients
WHERE test_account = 'NO'
AND DATEDIFF(curdate(), last_order_date) > 365
GROUP BY DATE_FORMAT(last_order_date,'%Y %m');
如果同时放置在 GROUP BY 中,查询将在某个月后提供停止。