似乎是彩票玩法。幸好我买彩票多年亏了很多 懂这个。不过你说的第三问,我是没看明白。
前两问,估计你稍微修改一下就 出结果了 。
1510 10
1511 10
1512 18
1513 18
1514 13
1515 12
1516 10
----
明显 10 号 最大间隔 是 1516-1511 是 5 期。 你说是间隔了六期 ?1516-1510?? 即使是在玩彩票也不是这样算的,如果是这样算 ,比我写的要简单的多。
------
USE TEST;
SELECT Fnum,M.rank FROM
(
SELECT A.Fid,A.Fnum,
IF(@Fnum=A.Fnum,@rank:=@rank+1,@rank:=1) AS rank,
@Fnum:=A.Fnum
FROM
(
SELECT Fid,Fnum FROM cte ORDER BY Fid ASC
) A ,(SELECT @Fnum:= NULL ,@rank:=0) B
) M
WHERE rank>1
--------结果
Fnum 连续次数
'10', '2'
'18', '2'
---------
--检索最大间隔周期
SELECT M.Fnum,Max(GQ) FROM
(
SELECT A.Fid,A.Fnum,
IF(@Fnum=A.Fnum,@V:=A.Fid-@L,@V:=0) AS GQ,
@L:=A.Fid,@Fnum:=A.Fnum
FROM
(
SELECT Fid,Fnum FROM cte ORDER BY Fnum,Fid ASC
) A ,(SELECT @Fnum:= NULL ,@L:=0,@V:=0) B
) M
GROUP BY M.Fnum
----
Fnum 间隔
'10', '5'
'11', '2'
'12', '3'
'13', '0'
'18', '1'
----------
第三问间隔出现的次数 在第二问的基础上扩充就可以了。