「Puzzle55:競走馬の入賞回数」の編集履歴(バックアップ)一覧に戻る

Puzzle55:競走馬の入賞回数 - (2008/06/24 (火) 16:09:39) の編集履歴(バックアップ)


問題

  • 突然だが、あなたはたった今競馬のDBマネージャーとして雇われた。
  • 胴元は、統計を取るためにレースの記録を残しており、その記録先のテーブルは次のとおりだ。

CREATE

chiakiの解答


考え方


  • 欠番があるかどうかだけ調べたいなら、数の個数が(最大の数ー最小の数+1)個あれば良い。
  • 注1)seq は PRIMARY KEY なので、同じ数字はないという前提の下である。
  • 注2)連番と書いてあるので、数が順に並んでいない場合は考えていない。

*SQL文

SELECT CASE WHEN count(N2.seq) = (SELECT (max(N1.seq) - min(N1.seq) +1)
                                 FROM Numbers N1)
       THEN 'has no missing number'
       ELSE 'exist missing number'
       END AS Numbers
FROM Numbers N2;

実行結果


 seq
-----
   2
   3
   5
   7
   8
  14
  20  の場合

       numbers
----------------------
 exist missing number

 seq
-----
   2
   3
   4
   5
   6
   7
   8  の場合

        numbers
-----------------------
 has no missing number

  • 値が1個や2個の場合も成功しました☆