令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問6
テクノロジ/データベース“商品”表と“当月商品仕入合計”表に対して,SQL 文を実行した結果はどれか。 〔SQL 文〕 (SELECT 仕入先コード FROM 商品) EXCEPT (SELECT 仕入先コード FROM 当月商品仕入合計)

出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問6
- ア仕入先コード:K01, K01, K03
- イ仕入先コード:K01, K03
- ウ仕入先コード:K02, K02, K04
- エ仕入先コード:K02, K04
正解:エ
解説
“商品”表の仕入先コード列の値は{K01, K01, K02, K02, K03, K04}であり,“当月商品仕入合計”表の仕入先コードは{K01, K03, K05}です。EXCEPTは重複行を取り除いた差集合を返す集合演算であるため,商品側の値を重複除去した集合{K01, K02, K03, K04}から,当月商品仕入合計側の集合{K01, K03, K05}に含まれる値(K01とK03)を取り除くと,結果は{K02, K04}となります。
選択肢ごとの解説
- ア誤り。K01が2件残っており重複除去が行われていない結果になっていますが,EXCEPTは重複行を除去した差集合を返すため,このような重複を含む結果にはなりません。
- イ誤り。K01とK03は“当月商品仕入合計”表にも存在する値であり,EXCEPTによって取り除かれるため,結果に残ることはありません。
- ウ誤り。K02が2件残っており重複除去が行われていない結果になっていますが,EXCEPTは重複行を除去した差集合を返すため,このような重複を含む結果にはなりません。
- エ正しい。商品側の仕入先コードの集合{K01, K02, K03, K04}(重複除去済み)から,当月商品仕入合計側に存在するK01とK03を取り除くと,{K02, K04}が残ります。