[2 days left] What’s wrong with your cloud strategy? Learn why multicloud solutions matter with Nimble Storage.Register Now

x
?
Solved

sql query to insert the fibonacci sequence into a table

Posted on 2013-12-31
2
Medium Priority
?
507 Views
Last Modified: 2014-02-19
I need an insert statement to insert the fibonacci sequence into a table. Lets think for a moment that the table has two fields

fibid - is an integer, identity field
fibnum is where the fibonacci sequence should go.

so it will be something like this

fibid(1,2,3,4,5)
fibnum(1,2,3,5,8)

etc

lets say populate 200 records

thanks,
Vinnie
0
Comment
Question by:damixa
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 16

Expert Comment

by:Surendra Nath
ID: 39749180
There are many ways to solve this problem, with different performances.....

But for a novice and easy to understand the below is the best approach

Step 1 : Create a table fibonacci with the required fields
step 2 : create a loop
Step 3 : caliculate the current fibonacci number
step 4: Store it in the table

DECLARE @T TABLE
(
fbid BIGINT IDENTITY(1,1)
,Fib BIGINT
)

DECLARE @FibonacciCurrent BIGINT
DECLARE @FibonacciPast BIGINT
DECLARE @Temp BIGINT
DECLARE @Counter BIGINT
SET @FibonacciCurrent = 1
SET @FibonacciPast = 1
WHILE (@Counter < 200)
BEGIN
   INSERT INTO @t (fib)
   SELECT @FibonacciCurrent

   SET @temp = @FibonacciCurrent  
   SET @FibonacciCurrent = @FibonacciCurrent + @FibonacciPast
   SET @FibonacciPast = @temp

   SET @Counter = @counter + 1
END

SELECT * FROM @T

Open in new window

0
 
LVL 41

Accepted Solution

by:
Sharath earned 2000 total points
ID: 39754568
check this.
;WITH Fibonacci(n, f, f1)
AS (
        -- This is the anchor part
        -- Initialize level to 1 and set the first two values as per definition
        SELECT  CAST(1 AS BIGINT),
                CAST(0 AS BIGINT),
                CAST(1 AS BIGINT)

        UNION ALL

        -- This is the recursive part
        -- Calculate the next Fibonacci value using the previous two values
        -- Shift column (place) for the sum in order to accomodate the previous
        -- value too because next iteration need them both
        SELECT  n + 1,
                f + f1,
                f
        FROM    Fibonacci
        -- Stop at iteration 93 because we than have reached maximum limit
        -- for BIGINT in Microsoft SQL Server
        WHERE   n < 93
)
-- Now the easy presentation part
SELECT  n,
        f AS Number
FROM    Fibonacci

Open in new window

http://sqlblog.com/blogs/peter_larsson/archive/2009/10/18/simple-fibonacci-calculation.aspx
0

Featured Post

Learn how to optimize MySQL for your business need

With the increasing importance of apps & networks in both business & personal interconnections, perfor. has become one of the key metrics of successful communication. This ebook is a hands-on business-case-driven guide to understanding MySQL query parameter tuning & database perf

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I'm trying, I really am. But I've seen so many wrong approaches involving date(time) boundaries I despair about my inability to explain it. I've seen quite a few recently that define a non-leap year as 364 days, or 366 days and the list goes on. …
A Stored Procedure in Microsoft SQL Server is a powerful feature that it can be used to execute the Data Manipulation Language (DML) or Data Definition Language (DDL). Depending on business requirements, a single Stored Procedure can return differe…
This videos aims to give the viewer a basic demonstration of how a user can query current session information by using the SYS_CONTEXT function
Viewers will learn how to use the SELECT statement in SQL to return specific rows and columns, with various degrees of sorting and limits in place.

656 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question