問題
次の SQL を実行したときの結果として正しいものはどれか。SELECT COUNT(*) FROM 注文 WHERE 顧客ID IN (SELECT 顧客ID FROM 顧客 WHERE 地域 = '東京');
選択肢
- 1東京の顧客が出した注文の総件数
- 2東京の顧客の人数
- 3東京の顧客 1 人あたりの平均注文件数
- 4注文を出した顧客の総数(地域不問)
正解
1. 東京の顧客が出した注文の総件数
詳しい解説を見る解説を閉じる
解説
副問合せ「SELECT 顧客ID FROM 顧客 WHERE 地域 = '東京'」は東京在住の顧客 ID 集合を返す。外側のクエリでは注文テーブルからその顧客 ID リストに該当するレコードを抽出し、COUNT(*) で行数を計上する。結果は「東京の顧客が発注した注文の総件数」となる。顧客 1 人で複数注文がある場合は重複してカウントされる点に注意。EXISTS や JOIN でも等価表現が可能で、実行計画やインデックスに応じてオプティマイザが最適な手法を選ぶ。
一問一答
全400問を繰り返し学習