質問: 以下の問題は、オラクル、ブロンズSQLの白本の問題になります。回答を見ても納得できないのでどなたか解説をお願い致します。 EMPLOYEES表のEMPNO、ENAMEおよびMGRには、社員番号、社員名および上司の社員番号が登録されています。次のSQL文の実行結果として正しいものを選択しなさい。 ``` SELECT empno, ename FROM employees WHERE empno IN (SELECT empno FROM employees MINUS SELECT DISTINCT mgr FROM employees); ``` 1,EMPLOYEES表から部下のいない社員の社員番号と社員名が表示される。 2,EMPLOYEES表から上司のいない社員の社員番号と社員名が表示される。 正解は1なります。 私考えでは2になるかと思うんですが、なぜなら 仮にEMPNOに1,2,3,4,5 MGRに4,5とあるとしたら 副問い合わせで返ってくる数値は1,2,3ですよね? 4,5が上司の番号なのですから残りの1,2,3は部下の番号になり 2の上司のいない番号が戻されるが正解と思ったのですが、違うみたいです。 どなたか解説をお願い致します。
回答: > > 副問い合わせで返ってくる数値は1,2,3ですよね? > > > ここまでの解釈はOKです。 複問い合わせの mgr はEMPNO全体のなかで、上司として登録されている社員です。 全社員(複問い合わせの empno)から上記を MINUS すると、のこりは、上司として登録されてない社員です。