如何使用MySql连续搜索数字

时间:2015-08-14 09:11:14

标签: mysql sql

我有这样的表

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

我真的需要帮助。几个星期以来一直在想这个。谢谢

1 个答案:

答案 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 

http://sqlfiddle.com/#!9/68b69/3