LoginSignup
1
2

More than 5 years have passed since last update.

SQL再帰WITH句の手習いズンドコキヨシ(※元ネタ有り)

Last updated at Posted at 2016-03-21

懲りずにズンドコキヨシ。
ワイ将、明智重蔵氏 の 下記エントリに衝撃を受ける。彡(゚)(゚)

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2