SQLでFizzBuzzテスト
So-net blog:ある nakagami の日記:集合演算で FizzBuzz問題

 nakagamiさんの実装が面白かったので、SQLでそのまま集合演算をしてみようとした。が、VIEW を何個も作らなきゃいけなかったりして、面倒くさそうだったので挫折。

 ということで、以下のような感じで割と素直にやってみた(*)(SQLでやるというところが素直ではないけどw)。

Oracle バージョン(9i で動作確認)

CREATE TABLE digits(n INTEGER);
INSERT INTO digits VALUES(0);
INSERT INTO digits VALUES(1);
INSERT INTO digits VALUES(2);
INSERT INTO digits VALUES(3);
INSERT INTO digits VALUES(4);
INSERT INTO digits VALUES(5);
INSERT INTO digits VALUES(6);
INSERT INTO digits VALUES(7);
INSERT INTO digits VALUES(8);
INSERT INTO digits VALUES(9);

SELECT CASE WHEN MOD(n, 15) = 0 THEN 'FizzBuzz'
WHEN MOD(n, 3) = 0 THEN 'Fizz'
WHEN MOD(n, 5) = 0 THEN 'Buzz'
ELSE TO_CHAR(n) END fizzbuzz
FROM (SELECT a.n + (b.n * 10) + 1 AS n
FROM digits a, digits b) nums
ORDER BY n;

MySQL バージョン(ver. 4.1.10 で動作確認)

CREATE TABLE digits(n INTEGER);
INSERT INTO digits VALUES(0), (1), (2), (3), (4),
(5), (6), (7), (8), (9);

SELECT CASE WHEN n % 15 = 0 THEN 'FizzBuzz'
WHEN n % 3 = 0 THEN 'Fizz'
WHEN n % 5 = 0 THEN 'Buzz'
ELSE n END fizzbuzz
FROM (SELECT a.n + (b.n * 10) + 1 AS n
FROM digits a, digits b) nums
ORDER BY n;


 なんか、はてブのコメント欄が壮絶なプログラミング合戦になってるけど、そっちにはあまり近寄らない方向でw。

*参考:CodeZine:SQLで数列を扱う(SQLテクニック, SQL, DB)
[PR]
by fkmn | 2007-05-11 23:06 | IT
<< NHK「クローズアップ現代」の... Second Life は E... >>


とあるWebアプリケーションエンジニアの日記
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX