--piotr_mis_tsqlchallenge_20_v1.sql
;WITH fibo (fib1, fib2) AS
(
SELECT CAST(0 AS bigint), CAST(1 as bigint)
UNION ALL
SELECT fib2, fib1+fib2
FROM fibo
WHERE fib2 < 7540113804746346429
), digits (pattern) AS
(
SELECT CAST('%00%' AS char(4))
UNION ALL
SELECT CAST('%11%' AS char(4))
UNION ALL
SELECT CAST('%22%' AS char(4))
UNION ALL
SELECT CAST('%33%' AS char(4))
UNION ALL
SELECT CAST('%44%' AS char(4))
UNION ALL
SELECT CAST('%55%' AS char(4))
UNION ALL
SELECT CAST('%66%' AS char(4))
UNION ALL
SELECT CAST('%77%' AS char(4))
UNION ALL
SELECT CAST('%88%' AS char(4))
UNION ALL
SELECT CAST('%99%' AS char(4))
), ord (rn, FiboNumber, NumRepeats) AS
(
SELECT ROW_NUMBER() OVER(PARTITION BY COUNT(f.fib2) ORDER BY f.fib2) AS rn, f.fib2, COUNT(f.fib2) AS digits
FROM fibo f INNER JOIN
digits d ON f.fib2 LIKE d.pattern
GROUP BY fib2
)
SELECT NumRepeats, FiboNumber
FROM ord
WHERE rn < 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.