DEAデータオペレーションとサポート

データエンジニアは、顧客テーブルから注文履歴テーブルに存在しない顧客のみを抽出するSQLクエリを作成する必要があります。注文履歴テーブルのcustomer_id一覧を除外する処理を実装する場合、適切なSQL構文はどれですか。

A
SELECT * FROM customers EXCEPT SELECT * FROM orders
✓ 正解
EXCEPTは左側のクエリ結果から右側のクエリ結果を除外する集合演算子です。存在しない顧客を抽出する用途に適しており、SQLでの差集合取得に利用されます。
B
SELECT * FROM customers UNION SELECT * FROM orders
UNIONは複数のSELECT結果を結合して重複を除去する構文です。片方の結果に存在する行だけを除外する処理には利用できません。
C
SELECT * FROM customers JOIN orders USING(customer_id)
JOINは複数テーブルを関連するキーで結合するための構文です。条件によって一致データを取得できますが、存在しないデータの抽出には適していません。
D
SELECT * FROM customers GROUP BY customer_id ORDER BY customer_id
GROUP BYはデータをグループ化して集計するための構文です。別テーブルとの差分を求める処理には利用できず、目的の結果を取得できません。

解説

EXCEPTは2つのSELECT結果から、左側の結果には存在するが右側の結果には存在しない行を取得するSQL集合演算子です。UNIONは結合、JOINは関連付け、GROUP BYは集計用途であり、指定された除外処理には適していません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDEAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DEA の問題一覧に戻る