次の表は,営業担当者のある年度の販売実績である。
この表の第1期から第4期の販売金額の平均が4,000万円以上で,どの期でも3,000万円以上販売している営業担当者の名前を求めるSQL文として,適切なものはどれか。
ここで,金額の単位は千円とする。
販売実績
/番号|名前|第1期|第2期|第3期|第4期/123|山田 一郎|29,600|31,900|36,600|41,500/594|鈴木 太郎|43,500|45,300|30,400|46,400/612|佐藤 花子|49,600|39,400|42,300|51,100/…|…|…|…|…|…
正答4
解説
正解は4です。
この問題は、条件を正しくSQLのWHERE句に表せるかを問うています。
金額の単位は千円なので、4,000万円は40,000、3,000万円は30,000で表されます。
4期の平均が40,000以上という条件は、4期の合計が160,000以上という条件と同じです。
「どの期でも30,000以上」は、4期すべての条件をANDで結ぶ必要があります。
【選択肢別解説】
1:× 平均の条件と各期の条件をすべてORで結んでいます。
どれか一つの期が30,000以上なら選ばれてしまうので誤りです。
2:× 4期の合計を40,000以上としています。
これは平均10,000以上という意味になり、条件が緩すぎます。
正しくは合計160,000以上です。
3:× どれかの期が40,000を超えればよいという条件になっており、平均の条件になっていません。
また、ANDとORが混在していて、各期の条件も正しく表せていません。
4:○ 合計160,000以上(平均40,000以上)と、各期30,000以上の4条件をすべてANDで結んでいます。
表の例では、全期30,000以上で合計165,600の鈴木と、合計182,400の佐藤が選ばれます。
山田は第1期が29,600なので選ばれません。
【ポイント】
「すべての期で」はAND、「いずれかの期で」はORで表します。
SQLではANDがORより先に評価されるので、ANDとORを混ぜるときは括弧で範囲を明示することが大切です。