TSQL Challenge 20 - Solution By Narasimhan Jayachandran



--Narasimhan_Jayachandran_tsqlchallenge_20.sql
with Fibonacci
as
(select convert(bigint,0) as FiboNumber, convert(bigint,1) as PrevNumber, 0 as Ctr
 union all
 select convert(bigint,FiboNumber+PrevNumber) as FiboNumber, convert(bigint,FiboNumber) as PrevNumber, Ctr+1  from Fibonacci
 where Ctr < 92
 )
,
FiboNumberRepeat
as
(
select Ctr,FiboNumber,
case when charindex('00',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('11',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('22',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('33',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('44',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('55',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('66',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('77',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('88',FiboNumber) > 0 then 1 else 0 end	+
case when charindex('99',FiboNumber) > 0 then 1 else 0 end
as NumRepeats
from Fibonacci
)
,
SeqFiboNumberRepeat
as
(
select row_number() over (partition by NumRepeats order by NumRepeats,FiboNumber) as SeqNum,NumRepeats,FiboNumber
from FiboNumberRepeat
where NumRepeats > 0
) 
select NumRepeats,FiboNumber from SeqFiboNumberRepeat where SeqNum < 6






Did you find something incorrect/wrong with this solution? Take a few seconds to Report It.

Did you understand how this solution work? If you find it difficult to understand, you can Request an Explanation or you can Write an explanation to help others better understand this solution.