## Fibonacci in PostgreSQL

I should have brought this up in the previous post. The question on everyone's mind must be, if SQL has recursion, how do you compute the Fibonacci sequence? Here's how:

SELECT fib FROM (WITH RECURSIVE fibonacci(fib, fib1) AS ( SELECT 1, 0 UNION SELECT 1 :: NUMERIC, 1 :: NUMERIC UNION SELECT fib + fib1, fib FROM fibonacci ) SELECT * FROM fibonacci) AS fibs LIMIT 1000;

I couldn't see a way to refer to the previous two rows, so instead I just carry along the previous row's value inside the current row, so the next calculation can see the previous two values. I wrapped the whole thing in a `SELECT`

to hide `fib1`

. The `NUMERIC`

type gives you arbitrary-precision math (or at least to 1000 decimals). Without it, the maximum number you can calculate is 46 because 1134903170 + 1836311903 overflows the normal integer.