昨日の問題を解いた

 ※また難しめの話なので、お急ぎの方は最後の2行だけ読めば理解できます。

 昨日の問題、

"社員"表に対して次の SQL を実行した結果として,正しいものはどれか。

 完全に把握した!

 まず同じ表をS1,S2として使うので、1レコードに対して全レコードがくっつきます。

 S1.生年 >= S2.生年

 って条件があるので、自分自身も含め生年が小さいのはそれぞれ

00001 織田 信夫 1943
00001,00004
00002 武田 信二 1968
00001,00002,00004,00005,00006,00007,00009,00010
00003 柴田 勝男 1970
00001,00002,00003,00004,00005,00006,00007,00009,00010
00004 浅井 長吉 1943
00001,00004
00005 三浦 一郎 1953
00001,00004,00005
00006 今川 義一 1954
00001,00004,00005,00006
00007 羽柴 吉秀 1962
00001,00004,00005,00006,00007,00009,00010
00008 毛利 輝夫 1975
00001,00002,00003,00004,00005,00006,00007,00008,00009,00010
00009 伊達 正雄 1961
00001,00004,00005,00006,00009,00010
00010 細川 太郎 1957
00001,00004,00005,00006,00010

 となります。

HAVING COUNT(*) <= 3

 なので、それぞれの人の所に含まれる番号が3件以下の人が出ます。
 対象の人は「00001(1943)」「00004(1943)」「00005(1953)」ですが、生年でDISTINCTするので、00001と00004は合計します。よって1943は合計4件になるので3件以下の条件からはずれます。つまり「1953」だけが出力されるってワケだ!やったッ!第三部完!!

 おかげさまで、午前問題はまあまあ合格圏内に入れそうです・・・。
 あとは午後問をしっかりやっておかないとなー。