問題 No.1946
ECサイトの売上分析システムにおいて、顧客テーブルから「購入金額が1万円以上」かつ「会員ランクがゴールド」の条件に一致する顧客のメールアドレスのリストを取得するため、データベースエンジニアがSQLを用いて検索用の命令文を作成することになった。この操作に関する記述として、最も適切なものはどれか。
【正解の解説】
SELECT句に対象となる列名を指定し、WHERE句に該当する抽出条件を記述してデータを取得する。
レストランの注文票に例えると、「どの料理(メールアドレス)が欲しいか」をSELECT句で選び、「予算1000円以下で辛口(購入金額1万円以上かつゴールド会員)」という具体的なこだわり条件をWHERE句で指定するイメージです。データベースという巨大な本棚から、欲しいページだけを正確に引き出すための基本かつ最も重要な組み合わせとなります。
スポンサーリンク
【その他の選択肢の解説】
FROM句に対象となる列名を指定し、GROUP BY句に該当する抽出条件を記述してデータを取得する。
FROM句は「どの本棚(テーブル)から探すか」を指定する場所であり、列名を書く場所ではありません。また、GROUP BY句はデータをグループ分けして集計するためのものであり、単なる条件抽出には使えないという初学者が勘違いしやすい典型的な罠として出題されています。
WHERE句に対象となる列名を指定し、HAVING句に該当する抽出条件を記述してデータを取得する。
HAVING句は、例えば「グループごとの売上合計が100万円以上の部署だけを選ぶ」といった、データを集計した後のグループに対するフィルターです。今回の問題のような「一人ひとりの顧客データをそのまま絞り込む」場面では使えないため、WHERE句との役割の違いを正確に理解しておく必要があります。
SELECT句に対象となる列名を指定し、ORDER BY句に該当する抽出条件を記述してデータを取得する。
ORDER BY句は「データを大きい順や五十音順に並べ替える」ための命令であり、条件に一致するデータを絞り込む機能はありません。レストランの例で言えば、条件に合う客を選ぶのではなく、選んだ客を「背の順に並べ直す」作業にあたるため、抽出目的の操作としては不適切となります。