SQLの集合演算(UNION・INTERSECT・EXCEPT)とは?
SQLの集合演算(UNION・INTERSECT・EXCEPT)とは、複数のSELECT文の実行結果を集合として組み合わせるSQLの演算。UNIONは和集合(両方の結果を重複なく統合、UNION ALLなら重複を許して統合)、INTERSECTは積集合(両方に共通する行)、EXCEPTは差集合(一方にあって他方にない行)を返す。
応用情報技術者試験の過去問では4回出題されています(2018年度〜2021年度)。
えすきゅーえるのしゅうごうえんざん
SQLの集合演算(UNION・INTERSECT・EXCEPT)の意味
複数のSELECT文の実行結果を集合として組み合わせるSQLの演算。UNIONは和集合(両方の結果を重複なく統合、UNION ALLなら重複を許して統合)、INTERSECTは積集合(両方に共通する行)、EXCEPTは差集合(一方にあって他方にない行)を返す。
SQLの集合演算(UNION・INTERSECT・EXCEPT)の具体例
「今月の購入者」と「先月の購入者」の両方のSELECT結果にINTERSECTを使えば、2か月連続で購入した顧客だけを抽出できる。
SQLの集合演算(UNION・INTERSECT・EXCEPT)は試験でどう引っ掛けられる?
UNIONは重複行を1行にまとめるが、UNION ALLはまとめない。「ALLが付くほうが処理が重い」と考えがちだが逆で、重複除去のためのソートが入るUNIONのほうが遅い。またEXCEPT(差集合)は左右を入れ替えると結果が変わる非可換な演算で、UNION・INTERSECTと同列に扱えない。集合演算は行方向の演算で、列を横につなぐ結合(JOIN)とは働く向きが違い、列数とデータ型が一致していないと実行できない。
SQLの集合演算(UNION・INTERSECT・EXCEPT)と関連する用語
SQLの集合演算(UNION・INTERSECT・EXCEPT)が出た過去問
関係Rと関係Sに対して、関係Xを求める関係演算はどれか。
正解:和
要点:和は両表の行を重複を除いて合わせる演算
関係Xは、RとSのどちらかに現れる行をすべて集めたものになっている。RとSに共通する行(0001,a,100)は重複を除いて1行だけ含まれており、これは和(UNION)演算の結果である。差ならRにあってSにない行だけ、直積なら行数が3×2=6行になるため、いずれも一致しない。
出典:平成30年度 春期 応用情報技術者試験 午前 問27(IPA)"東京在庫"表と"大阪在庫"表に対して、SQL文を実行して得られる結果はどれか。ここで、実線の下線は主キーを表す。 〔SQL文〕 SELECT 商品コード, 在…
正解:商品コード・在庫数の組みが A001:50, B002:25, B002:15, C003:35, C003:35, D004:80 の6行の結果表
要点:UNION ALLは重複を除かずに結果を単純連結する
UNION ALLは2つの問合せ結果を単純に連結し、重複行を取り除かない。東京在庫の3行と大阪在庫の3行がそのまま並ぶので、結果は6行になる。重複を除きたい場合はALLを付けないUNIONを使う。
出典:令和2年度 10月 応用情報技術者試験 午前 問29(IPA)関係Rと関係Sに対して、関係Xを求める関係演算はどれか。
正解:和
要点:同じ列構成の関係の行を重複なく合わせる演算が和
関係Xの内容は、関係Rの3行と関係Sの2行を合わせ、重複する行を1つにまとめたものになっている。これは集合演算の和(UNION)の結果である。和・差・積(共通)はいずれも和両立(同じ属性構成)である関係どうしに適用できる演算である。
出典:令和3年度 秋期 応用情報技術者試験 午前 問26(IPA)“部門別売上”表から、部門コードごと、期ごとの売上を得るSQL文はどれか。
正解:SELECT 部門コード, '第1期' AS 期, 第1期売上 AS 売上 FROM 部門別売上 UNION (SELECT 部門コード, '第2期' AS 期, 第2期売上 AS 売上 FROM 部門別売上) ORDER BY 部門コード, 期
要点:横持ちを縦持ちに変換するにはUNIONで行を連結する
1行に第1期と第2期の売上が横に並んだ表を、期ごとの縦持ちに変換したい。第1期を取り出す問合せと第2期を取り出す問合せをそれぞれ作り、UNIONで行方向に連結すれば求める結果になる。UNIONは列数と列のデータ型が一致していれば結果を縦に結合できる。
出典:令和3年度 秋期 応用情報技術者試験 午前 問29(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。