中小企業診断士 過去問
令和5年度 再試験(2023年)
問151 (経営情報システム 問4)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

中小企業診断士試験 令和5年度 再試験(2023年) 問151(経営情報システム 問4) (訂正依頼・報告はこちら)

下表は、ある中小企業の「アルバイト」表と「店舗」表である。
この2つの表から、店舗ごとの年間給与支給額の総額を集計した「店舗別給与支給額」表を作成することを考える。

以下のSQL文の空欄①~③に入る記述の組み合わせとして、最も適切なものを下記の解答群から選べ。
問題文の画像
  • ①:AVG(年間給与支給額)  ②:アルバイト.店舗コード  ③:総支給額DESC
  • ①:MAX(年間給与支給額)  ②:店舗.店舗コード  ③:総支給額ASC
  • ①:MAX(年間給与支給額)  ②:アルバイト.住所  ③:総支給額DESC
  • ①:SUM(年間給与支給額)  ②:アルバイト.店舗コード  ③:総支給額ASC
  • ①:SUM(年間給与支給額)  ②:店舗.店舗コード  ③:総支給額DESC

次の問題へ

正解!素晴らしいです

残念...

この過去問の解説 (2件)

01

SQL文の解法は、作成したい表が、元データの【どの要素を組み合わせて】構成されているかを先ず確認して、構文に変換する作業となります。

各言語の意味は、本問題の場合

・SELECT:抽出する列(横方向)の項目を指定します。(複数ある場合は「,(カンマ)」で区切ります。

・FROM:参照元(テーブル)の表を指定します。(複数ある場合は「,(カンマ)」で区切ります。

・WHERE:条件を指定。本問題では「表:アルバイトの店舗コード」と「表:店舗の店舗コード」が【=(等しい)】という条件が付与されてます。

・GROUP BY:作成したい表の行(縦方向)の集計を目的に、グループ化したい項目を指定します。

・ORDER BY:作成したい表の列の並び方を昇順、降順で指定します。(省略した場合は、昇順となります)

選択肢1. ①:AVG(年間給与支給額)  ②:アルバイト.店舗コード  ③:総支給額DESC

①:AVG(年間給与支給額)  → AVGは、Average(平均)を意味しており、本問題は【年間給与支給額の総額を集計した「店舗別給与支給額」】を求めるため、誤り。

 

選択肢2. ①:MAX(年間給与支給額)  ②:店舗.店舗コード  ③:総支給額ASC

①:MAX(年間給与支給額) → MAXは、【最大値】を意味しており、本問題は【年間給与支給額の総額を集計した「店舗別給与支給額」】を求めるため、誤り。

選択肢3. ①:MAX(年間給与支給額)  ②:アルバイト.住所  ③:総支給額DESC

①:MAX(年間給与支給額) → MAXは、【最大値】を意味しており、本問題は【年間給与支給額の総額を集計した「店舗別給与支給額」】を求めるため、誤り。

選択肢4. ①:SUM(年間給与支給額)  ②:アルバイト.店舗コード  ③:総支給額ASC

①:SUM(年間給与支給額) → SUMは、【合計】を意味しており、本問題の【年間給与支給額の総額を集計した「店舗別給与支給額」】に合致しています。

 

②:アルバイト.店舗コード   → 作成したい表は「表:アルバイトの店舗コードの並びに沿って」作成されていません。

 

③:総支給額 ASC → ASCは、【小さい数字から、大きい数字の順番(昇順)】に並べる指示となり、本問題の【金額の大きい順に並べる】には合致しません。

選択肢5. ①:SUM(年間給与支給額)  ②:店舗.店舗コード  ③:総支給額DESC

①:SUM(年間給与支給額)→ SUMは、【合計】を意味しており、本問題の【年間給与支給額の総額を集計した「店舗別給与支給額」】に合致しています。

 

②:店舗.店舗コード → 作成したい表は「表:店舗の店舗コードの並びに沿って」作成されており、合致しています。

  

③:総支給額DESC → DESCは、【大きい数字から、小さい数字の順番(降順)】に並べる指示となり、本問題の【金額の大きい順に並べる】と合致しています。

 

【よってこちらの選択肢が正解となります】

まとめ

SQLは、頻出の定型構文を覚えることで簡単に対応できます。

参考になった数4

02

SQLに関する問題です。

 

既に、与件文には店舗別給与支給額表が与えられており、「アルバイト」表と「店舗」表からどのように店舗別給与支給額表を作成したのかをSQL文から判断することが問われています。

 

空欄①~③では、①が最も対応しやすいです。

実は、与件文に「店舗ごとの年間給与支給額の総額を集計した店舗別給与支給額表を作成する」と記述されており、与件文の表やSQL文から判断することなく集計を意味する「SUM(年間給与支給額)」が入ることが分かります。

 

空欄①だけで、選択肢を2択に絞り込むことができます。

次は、空欄③が対応しやすいです。

 

SQL文の「ORDER BY」句は、SQLで抽出したデータを並べ替える(ソートを行う)場合に用いられ、店舗別給与支給額表では降順(数字やアルファベットを大きい順または新しい順、遅い順など)に並んでいることが分かります。

ここから、空欄③には降順(DESC)である「総支給額DESC」が入ります。

 

最後に、空欄②を確認しておきます。SQL文の「GROUP BY」句は、データをグループ化する場合に用いられます。店舗別給与支給額表を見ると店舗名と店舗所在地があり、「店舗」表の店舗.店舗コードからグルーピングされたことが分かります。

選択肢1. ①:AVG(年間給与支給額)  ②:アルバイト.店舗コード  ③:総支給額DESC

冒頭の解説より「①:SUM(年間給与支給額)②:店舗.店舗コード、③:総支給額DESC」の組み合わせであるため不適切な選択肢です。

選択肢2. ①:MAX(年間給与支給額)  ②:店舗.店舗コード  ③:総支給額ASC

冒頭の解説より「①:SUM(年間給与支給額)、②:店舗.店舗コード、③:総支給額DESC」の組み合わせであるため不適切な選択肢です。

選択肢3. ①:MAX(年間給与支給額)  ②:アルバイト.住所  ③:総支給額DESC

冒頭の解説より「①:SUM(年間給与支給額)、②:店舗.店舗コード、③:総支給額DESC」の組み合わせであるため不適切な選択肢です。

選択肢4. ①:SUM(年間給与支給額)  ②:アルバイト.店舗コード  ③:総支給額ASC

冒頭の解説より「①:SUM(年間給与支給額)、②:店舗.店舗コード、③:総支給額DESC」の組み合わせであるため不適切な選択肢です。

選択肢5. ①:SUM(年間給与支給額)  ②:店舗.店舗コード  ③:総支給額DESC

冒頭の解説より「①:SUM(年間給与支給額)、②:店舗.店舗コード、③:総支給額DESC」の組み合わせであるため正解の選択肢となります。

まとめ

【補足】

 

・SQL文の「ORDER BY」句について

昇順(ASC)は、降順とは逆に数字やアルファベットを小さい順(または古い順、早い順など)に並べることです。

また、「ORDER BY」句では昇順または降順の指定を省略した場合は昇順でソートが行われることも覚えておきましょう。

 

SQL文は毎年出題される頻繫論点であり、過去問題で復習して必ず対応できるようにしておきましょう。

過去問題では、本問のようにSQL文の一部を空欄にして正しい組み合わせを問う形式や、正規化されていない表を正規化させる形式など、幾つかのバリエーションがあります。

参考になった数0