## Friday, November 23, 2018

### Happy Fibonacci day, here is how to generate a Fibonacci sequence in SQL

Image by Jahobr - Own work, CC0, Link

Since today is Fibonacci day I decided to to a short post about how to do generate a Fibonacci sequence in T-SQL. But first let's take a look at what a Fibonacci sequence actually is.

In mathematics, the Fibonacci numbers are the numbers in the following integer sequence, called the Fibonacci sequence, and characterized by the fact that every number after the first two is the sum of the two preceding ones:

1, 1, 2, 3, 5, 8, 13, 21, 34, ...

Often, especially in modern usage, the sequence is extended by one more initial term:

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

November 23 is celebrated as Fibonacci day because when the date is written in the mm/dd format (11/23), the digits in the date form a Fibonacci sequence: 1,1,2,3.

So here is how you can generate a Fibonacci sequence in SQL, you can do it by using s recursive table expression.  Here is what it looks like if you wanted to generate the Fibonacci sequence to up to a value of 1 million

```;WITH Fibonacci (Prev, Next) as
(
SELECT 1, 1
UNION ALL
SELECT Next, Prev + Next
FROM Fibonacci
WHERE Next < 1000000
)
SELECT Prev as Fibonacci
FROM Fibonacci
WHERE Prev < 1000000```

That will generate a Fibonacci sequence that starts with 1, if you need a Fibonacci sequence that start with 0, all you have to do is replace the 1 to 0 in the first select statement
```
```
```;WITH Fibonacci (Prev, Next) as
(
SELECT 1, 1
UNION ALL
SELECT Next, Prev + Next
FROM Fibonacci
WHERE Next < 1000000
)
SELECT Prev as Fibonacci
FROM Fibonacci
WHERE Prev < 1000000
```

Here is what it looks like in SSMS

Happy Fibonacci day!!

I created the same for PostgreSQL, the only difference is that you need to add the keyword RECURSIVE in the CTE, here is that post  Happy Fibonacci day, here is how to generate a Fibonacci sequence in PostgreSQL