テーマ: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
コメント