平成27年度 秋期 午前 問28
データベース
SQLに関する問題
“出庫記録”表に対する SQL 文のうち,最も大きな値が得られるものはどれか。
表(書き起こし):
出庫記録
| 商品番号 | 日付 | 数量 |
|---|---|---|
| NP200 | 2015-10-10 | 3 |
| FP233 | 2015-10-10 | 2 |
| NP200 | 2015-10-11 | 1 |
| FP233 | 2015-10-11 | 2 |
- アSELECT AVG(数量) FROM 出庫記録 WHERE 商品番号 ='NP200'
- イSELECT COUNT(*) FROM 出庫記録
- ウSELECT MAX(数量) FROM 出庫記録
- エSELECT SUM(数量) FROM 出庫記録 WHERE 日付 ='2015-10-11'
答えと解説を見る
✓ これが正解イSELECT COUNT(*) FROM 出庫記録
解説
出庫記録の全行を数えるSQL文が最大になります。
出庫記録の表には全部で4行のデータがあります。それぞれの選択肢が返す値を順に見ていきます。全行を数えるSQLの集合関数は行数そのものを返すので、値は4になります。特定の商品番号に絞って数量の平均を求めるSQL文は、対象となる行が2つあり、平均は2になります。数量の最大値を返すSQL文は、表の中で最も大きい値が3なので、返る値は3です。特定の日付に絞って数量の合計を求めるSQL文は、対象となる行の数量を足すと3になります。見分けるときの軸は二つで、一つ目は絞り込みの有無、二つ目は集合関数の種類です。この二つの軸から、絞り込みなしで全行を数えるSQL文が最も大きな値を返します。ここで大切なのは、実際にそれぞれの値を計算してから比べることで、名前だけを眺めて決めないことです。
ほかの選択肢はなぜ違うのか
- アSELECT AVG(数量) FROM …:AVG(数量)を商品番号がNP200の行に絞って求める式です。該当する行は2つで数量は3と1なので、平均は2になり、行数を数える式の値である4には及びません。
- ウSELECT MAX(数量) FROM …:MAX(数量)は表の中の数量の最大値を返す式です。表に含まれる数量の値のうち最も大きいのは3なので、返る値は3となり、全行を数える式の値より小さくなります。
- エSELECT SUM(数量) FROM …:SUM(数量)を日付が2015-10-11の行に絞って求める式です。該当する行は2つで数量は1と2なので、合計は3になり、全行を数える式が返す値には届きません。
出典:平成27年度 秋期 基本情報技術者試験 午前 問28(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)