初級シスアドSQL過去問題解説
解答:ア
問題のSELECT文の意味はつぎのとおりである。
- SELECT 商品コード,SUM(単価*販売数量)
- 商品コードと単価*販売数量の合計の列を抽出する
- FROM 商品,販売
- 「商品」表と「販売」表より
- WHERE 商品.商品コード = 販売.商品コード
- 商品表の商品コードと販売表の商品コードが一致した行を抽出(表の結合)
- GROUP BY 商品コード
- 商品コードでグループ化をおこなう(グループ化)
- ORDER BY SUM(単価*販売数量)
- 単価*販売数量の合計の昇順に並べ替える
問題文のSELECT文の実行順序は次のとおりである。
- FROM句で記述されている「商品」と「販売」を読み込む
- WHERE句で記述されている商品の商品コードと販売の商品コードが一致した行を抽出する(表の結合)
- 商品コードでグループ化する
- 単価*販売数量の合計の昇順に並べ替える
したがって、問題文のSELECT文の実行結果は以下のようになる。
商品コード | SUM(単価*数量) |
---|---|
A5027 | 26000 |
A5025 | 48000 |
A5023 | 125000 |
実行結果の説明としては、解答群の「ア」が適切である。
実際にこのSELECT文をデータベース・ソフトで実行するとうまく動作しない。それは、SELECT句とGROUP BY句で指定している「商品コード」の指定に問題があるからだ。複数の表を使うときに同じ列名があるときはどの表の列か明示しなくてはならないいけない。この問題においては、商品.商品コードや販売.商品コードのように指定しなければならない。
スポンサードリンク