想知道如何在MySQL中完成这样的事情 - 基本上我需要通过订单获得上一年的订单数量,所以如果有人订购了三个订单(1.1.13,1.7.13和1.1.15第一个订单)由于前一年没有预订,最后的订单将为零,但中间的订单将是一个,因为在6个月之前有预订。)
像这样的东西得到前三个,不知道怎么得到总数?
SELECT order_no, email, order_date
FROM table.orders
order_no email order_date prev_yr_orders
143254 example@example.com 25/07/2013 1
646743 example@example.com 24/09/2013 2
757743 example@example.com 16/02/2014 3
993253 example@example.com 23/02/2014 4
535325 example@example.com 31/03/2015 1
答案 0 :(得分:0)
您可以使用相关子查询轻松完成此操作:
select o.*,
(select count(*)
from orders o2
where o2.email = o.email and
o2.order_date < o.order_date and
o2.order_date >= o.order_date - interval 1 year
) as NumOrdersPrevYear
from orders o;