SQLのSELECT文の選択項目リストに関する記述【午前2 解説】
要点まとめ
- 結論:SELECT文の選択項目リストには同一の列を複数回指定することが可能です。
- 根拠:SQLの仕様上、列名は重複してもエラーにならず、別名を付けることで区別も可能です。
- 差がつくポイント:集約関数の使い方やGROUP BY句の制約と混同しないことが重要です。
正解の理由
選択肢ウ「同一の列を異なる選択項目に指定できる。」が正解です。SQLのSELECT文では、同じ列を複数回指定しても問題ありません。例えば、同じ列を異なる集約関数で使ったり、別名(AS句)を付けて複数回表示することが可能です。これはSQLの柔軟性を示す基本的な仕様です。
よくある誤解
「SELECTで指定できるのは表の列だけ」「GROUP BY句で指定した列以外は集約関数に使えない」などの誤解が多いです。実際は集約関数の使い方にルールがあり、列の指定方法はもっと自由です。
解法ステップ
- SELECT文の基本構造を理解する。
- 選択項目リストに同じ列を複数回指定できるか確認する。
- 集約関数とGROUP BY句の関係を整理する。
- 各選択肢の記述とSQLの仕様を照らし合わせる。
- 正しい記述を選択する。
選択肢別の誤答解説
- ア: 「指定できるのは表の列だけである。」は誤り。計算式や関数の結果も指定可能です。
- イ: 「集約関数で指定する列は、GROUP BY句で指定した列でなければならない。」は誤解。集約関数はGROUP BY句の列以外に使えますが、非集約列はGROUP BYに含める必要があります。
- ウ: 「同一の列を異なる選択項目に指定できる。」は正しい。
- エ: 「表の全ての列を指定するには、全ての列名をコンマで区切って指定しなければならない。」は誤り。ワイルドカード「*」で全列指定が可能です。
補足コラム
SQLのSELECT文では、列名の代わりに計算式や関数を指定できるため、選択項目リストは非常に柔軟です。また、同じ列を複数回指定する際は、AS句で別名を付けることで結果セットの列名を区別できます。これにより、複雑な集計やデータ変換が容易になります。
FAQ
Q: SELECT文で同じ列を複数回指定するとエラーになりますか?
A: いいえ、エラーにはなりません。別名を付けて複数回指定することも可能です。
Q: GROUP BY句に指定しない列はSELECT文で使えますか?
A: 集約関数の引数としては使えますが、非集約列を直接指定する場合はGROUP BYに含める必要があります。
関連キーワード: SQL, SELECT文、集約関数、GROUP BY, ワイルドカード、AS句、データベース