SkillStack
テクノロジ系6 / 25問

データベーススペシャリスト試験 令和3年度 秋期 午前II 問6

"商品"表と"当月商品仕入合計"表に対して、SQL文を実行した結果はどれか。

〔SQL文〕  (SELECT 仕入先コード FROM 商品)    EXCEPT  (SELECT 仕入先コード FROM 当月商品仕入合計)

データベーススペシャリスト試験 令和3年度 秋期 午前II 問6の図表

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】エ

EXCEPTは、左側の問合せ結果に存在し、右側の問合せ結果には存在しない行を求める集合演算です。また、EXCEPT ALLではない通常のEXCEPTでは、同じ値が複数あっても重複が取り除かれます。

左側の「商品」表から取り出される仕入先コードは、K01、K01、K02、K02、K03、K04です。これを集合として考えると、{K01、K02、K03、K04}となります。右側の「当月商品仕入合計」表の仕入先コードは、{K01、K03、K05}です。左側から右側にも存在するK01とK03を除くと、K02とK04が残ります。したがって、これらを重複なく表示するエが正解です。なお、ORDER BYがないので表示順序自体は保証されません。

アのK01、K01、K03は誤りです。これは、商品表の各行について当月の仕入れがあるかを調べ、元の重複を残した場合などの結果です。

イのK01、K03は誤りです。これは両方の表に存在する値を求めるINTERSECT、すなわち積集合の結果です。

ウのK02、K02、K04は誤りです。これは右側に存在しない商品表の行を抽出し、商品表にあるK02の重複をそのまま残した結果です。通常のEXCEPTでは重複は除かれます。

【ポイント】 UNION、INTERSECT、EXCEPTは、通常は重複行を除いて集合として処理します。 重複を残す集合演算にはALLを付けます。集合演算の結果の順序が必要な場合は、ORDER BYを指定します。

出典:令和3年度 秋期 データベーススペシャリスト試験 午前II 問6
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の25問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める