TSQL Challenge 20 - Solution By brad mullins



--brad_mullins_tsqlchallenge_20.sql
WITH fib_numbers(FiboNumber ,AddNumber, NumRepeats) AS
(
	SELECT cast(0 AS BIGINT), cast(1 AS BIGINT), 0
	 UNION ALL
	SELECT AddNumber
		, FiboNumber+AddNumber
		, CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%00%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%11%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%22%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%33%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%44%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%55%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%66%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%77%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%88%' THEN 1 ELSE 0 END +
		 CASE WHEN CAST(AddNumber AS VARCHAR) LIKE '%99%' THEN 1 ELSE 0 END NumRepeats
	  FROM fib_numbers
	 WHERE AddNumber <= 7540113804746346428
)
, final_results as(
SELECT ROW_NUMBER() OVER (PARTITION BY NumRepeats ORDER BY FiboNumber) AS rowNum
	, NumRepeats
	, FiboNumber
  FROM fib_numbers
 WHERE NumRepeats > 0)

SELECT NumRepeats
	, FiboNumber
  FROM final_results
 WHERE rowNum <= 5
 ORDER BY NumRepeats, FiboNumber
  

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.