SQL再帰WITH句の手習いズンドコキヨシ(※元ネタ有り)
懲りずにズンドコキヨシ。
ワイ将、明智重蔵氏 の 下記エントリに衝撃を受ける。彡(゚)(゚)
Oracleの再帰With句でズンドコキヨシ http://qiita.com/AketiJyuuzou/items/c2bc63872125e7277e96
と云う訳(?)で、再帰WITH句の手習いがてら、リファクタリングっぽく似たのを作ってみた。
WITH rec(zundoko) AS ( SELECT NULL FROM DUAL UNION ALL SELECT zundoko || MOD(TRUNC(DBMS_RANDOM.VALUE*10), 2) FROM REC WHERE zundoko IS NULL OR zundoko NOT LIKE '%00001' ) SELECT kiyoshi FROM ( SELECT REPLACE(REPLACE(zundoko, '0', 'ズン!'), '1', 'ドコ!') || 'キ・ヨ・シ!' AS kiyoshi FROM rec ORDER BY ROWNUM DESC ) WHERE ROWNUM <= 1 /
結果は以下の通り、なるほどねぇ……彡(-)(-)
SQL> WITH rec(zundoko) AS ( 2 SELECT NULL FROM DUAL 3 UNION ALL 4 SELECT zundoko || MOD(TRUNC(DBMS_RANDOM.VALUE*10), 2) 5 FROM REC 6 WHERE zundoko IS NULL 7 OR zundoko NOT LIKE '%00001' 8 ) 9 SELECT kiyoshi FROM ( 10 SELECT REPLACE(REPLACE(zundoko, '0', 'ズン!'), '1', 'ドコ!') || 'キ・ヨ・シ!' AS kiyoshi 11 FROM rec 12 ORDER BY ROWNUM DESC 13 ) 14 WHERE ROWNUM <= 1 15 / KIYOSHI -------------------------------------------------------------------------------- ズン!ズン!ズン!ドコ!ドコ!ズン!ズン!ドコ!ドコ!ズン!ズン!ドコ!ドコ!ズ ン!ズン!ズン!ドコ!ズン!ズン!ドコ!ドコ!ドコ!ズン!ドコ!ズン!ズン!ズン !ドコ!ドコ!ドコ!ドコ!ドコ!ズン!ドコ!ドコ!ズン!ズン!ズン!ドコ!ズン! ズン!ズン!ズン!ズン!ドコ!キ・ヨ・シ!
以前の旅人算もそうなんですが、
氏の記事は実にエッジが効いていて参考になります(`・ω・)ゞ
Oracle ACE 山岸賢治氏 http://www.oracle.com/technetwork/jp/database/articles/vivadeveloper/index-1838333-ja.html US-OTNでは「Aketi Jyuuzou」、OTN-Japanのフォーラムでは「明智重蔵」のハンドルネームで活躍中。 「Oracle SQLパズル」を運営。
第1部 再帰with句の使用例 http://www.oracle.com/technetwork/jp/articles/otnj-sql-image7-1525406-ja.html#a
10-349 旅人算メソッドで連続日付をグループ化 http://www.geocities.jp/oraclesqlpuzzle/10-349.html
ズンドコキヨシまとめは下記
ズンドコキヨシまとめ http://qiita.com/shunsugai@github/items/971a15461de29563bf90
Qiitaにも書いたやで彡(゚)(゚)
SQL再帰WITH句の手習いズンドコキヨシ(※元ネタ有り) http://qiita.com/ora_gonsuke777/items/95b40ca8baa50cb3b875