Skip to content

Instantly share code, notes, and snippets.

@choplin
Created August 9, 2012 08:53
Show Gist options
  • Select an option

  • Save choplin/3302458 to your computer and use it in GitHub Desktop.

Select an option

Save choplin/3302458 to your computer and use it in GitHub Desktop.
fizzbuzz with SQL (imcomplete)
CREATE OR REPLACE FUNCTION fizzbuzz(num Int) RETURNS SETOF Text AS $$
WITH RECURSIVE
fizz(f) AS (
SELECT ARRAY[NULL,NULL,'fizz']
)
,buzz(b) AS (
SELECT ARRAY[NULL,NULL,NULL,NULL,'buzz']
)
,fizzbuzz(fb) AS (
SELECT
concat(f,b)
FROM(
SELECT
unnest(f) AS f,
unnest(b) AS b
FROM
fizz, buzz
)t
)
,r(rec, idx, fb) AS (
SELECT
1,
row_number() OVER (),
fb
FROM
fizzbuzz
UNION ALL
SELECT
rec+1,
15 * rec + row_number() OVER (),
fb
FROM
r
WHERE
idx < num
)
SELECT
fb
FROM
r
WHERE
idx <= num
$$ LANGUAGE SQL IMMUTABLE STRICT
;
SELECT fizzbuzz(100);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment