我有这样的表
Period ID Amount
2015-04-01 01 500
2015-04-01 02 600
2015-05-01 01 500
2015-05-01 02 700
2015-06-01 01 700
2015-06-01 02 800
日期格式位于:yyyy-MM-dd
我希望在4月至6月的不同时期内选择ID,并且金额连续增加3个月。
例如,对于ID:02,其中数字从600增加到700到700到800.对于ID:01没有被考虑因为数字没有连续增加3次,因为ID:01从4月到5月不再增加,500和500再次增加。
我需要的结果是选择ID,结果的样本将是:
ID
====
02
我真的需要帮助。几个星期以来一直在想这个。谢谢
答案 0 :(得分:0)
使用简单查询这并不容易,您需要在sql中使用一些用户定义的变量来进行计算。这是一种方式
select
ID from (
select
ID,
Amount,
@rn:= if(
@prev_id = ID
and @prev_amt <> Amount
and ( timestampdiff(month,@prev_day,Period) = 1 ),
@rn+1,1) as rn,
@prev_day:= Period,
@prev_id:=ID,
@prev_amt:=Amount
from test,(select @prev_id=null,@prev_day=null,@prev_amt:=0,@rn:=1)x
order by ID,Period
)x
where x.rn = 3