平成30年度 ITサービスマネージャ 午前Ⅱ問21

テーマ:SQL文

正解はこちら

解答:エ

問題一覧へ

[基礎知識・用語のまとめ]

SQL(Structured Query Language)文・・・ コンピュータ言語のひとつですが、プログラミング言語ではありません。 リレーショナルデータベース(RDB)のデータを操作するための言語です。

[解法]

「”社員”表から、役割名がプログラマである社員が3人以上所属している部門の部門名を取得する」ため、次の手順で集計を実施します。

手順(1):”社員”表から役割名がプログラマであるレコードを取得します。

手順(2):(1)の結果表を部門名で集計して、レコード数(社員数)をカウントします。この時、カウント数が3以上のレコードだけを取得します。

 

手順(1)は、社員表の中から特定の条件を満たすレコードだけを取得する処理なので、WHERE句を使ったSELECT文で実現可能です。

手順(2)は、集合(集計)関数を使う処理になることから、GROUP BY句を使ったSELECT文で実現できます。

また、「カウント数が3以上のレコードだけを取得する」という部分は、集計結果に対する条件であるから、HAVING句を利用することで実現可能となります。

以下を踏まえると次のようにまとめることができます。

SELECT 部門名 FROM 社員
 WHERE 役割名 = 'プログラマ'
  GROUP BY 部門名
  HAVING COUNT(*) >= 3

したがって、正解は「エ」となります。

その他の選択肢については、以下の通りです。

ア→GROUP BY句、HAVING句より後ろにWHERE句を記述することはできません。

イ、ウ→集合関数を使った条件はWHERE句に含められないため、誤りです。

[参考]

リレーショナルデータベースの正規化は、第三までが主流だが、実は第五まであり、状況によって使い分けると便利、、、らしい。

利用させていただきました素材へのリンク

うさちゃこちゃんねる様 https://www.youtube.com/channel/UCQcDdg4W6r5OfcB1JTcpABw  

ここまで読んでくれてありがとう!!
感謝!
感謝!

問題一覧へ

コメント