Oracle Database 10g SQL基礎T 5章 確認問題

問題1 普通の結合

全ての設問で「単純結合」「NATURAL JOIN」「JOIN USING」「JOIN ON」それぞれを考える。

設問1

employees表とdepartments表から全社員の「employee_id」「last_name」「job_id」「department_id」「department_name」を表示しなさい。なお、「department_id」の表名はdepartments表とすること。

設問2

employees表とdepartments表から「job_id」が'_MAN'で終わる社員の「last_name」「job_id」「department_name」を表示しなさい。

設問3

employees表とdepartments表から「department_id」が20の社員の「last_name」「department_name」を表示しなさい。なお「department_id」はemployees表から利用すること。

設問4

employees表から全社員の名前「last_name」と上司の名前「last_name」を表示しなさい。結果の表示方法は、<自分の名前>の上司は<上司の名前>とすること。

設問5

employees表から上司の名前「last_name」と全社員の名前「last_name」を上司の名前「last_name」の昇順で表示しなさい。結果の表示方法は、<上司の名前>の部下は<自分の名前>とすること。

設問6

従業員数を部門別に表示しなさい。結果の表示方法は「部門番号」「部門名」「従業員数」とすること。

問題2 外部結合

設問1

問題1設問1のSQLを「左辺外部結合」「右辺外部結合」「完全外部結合」にした場合、実行結果がそれぞれどうなるか説明しなさい。

設問2

問題1設問6のSQLを、従業員のいない部署も表示するよう修正しなさい。ただし、従業員のいない部署の人数は「0」と表示すること。

問題3 その他

設問1

employees表とdepartments表のデカルト積を求めるSQL文を2種類書きなさい。

問題4 分かるかな?

学生の出席状況を管理するため、次のテーブルを作成した。

<学生マスタ>
学籍番号NOT NULLNUMBER(6)
学科コードNOT NULLNUMBER(3)
学年NOT NULLNUMBER(1)
クラスNOT NULLCHAR(1)>
出席番号NOT NULLNUMBER(2)
学生氏名NOT NULLVARCHAR2(50)
学生フリガナNOT NULLVARCHAR2(50)
郵便番号
VARCHAR2(8)
住所1
VARCHAR2(100)
住所2
VARCHAR2(100)
電話番号
VARCHAR2(13)
保護者氏名
VARCHAR2(50)

<学科テーブル>
学科コードNOT NULLNUMBER(3)
学科名NOT NULLVARCHAR2(50)
学科名略称
VARCHAR2(20)
学科名記号
VARCHAR2(4)
修業年限NOT NULLNUMBER(1)

<出席状況マスタ>
学籍番号NOT NULLNUMBER(6)
発生日付NOT NULLDATE
欠席DEFAULT 0NUMBER(1)
欠課DEFAULT 0NUMBER(1)
遅刻DEFAULT 0NUMBER(1)

※ 欠席、欠課、遅刻のいずれかが発生したら、データを作成する
※ 1年ごとにクリアする

 以下の設問に答えなさい。

設問1

 欠席、欠課、遅刻の一覧表をクラス別に表示しなさい。必要な項目は「学科名」「学年」「クラス」「出席番号」「氏名」「発生日付」「欠席」「欠課」「遅刻」とし、「学科コード」「学年」「クラス」「出席番号」の昇順に並べる。また、欠席、欠課、遅刻が発生していない学生は表示しない。

設問2

 設問1のSQLを、欠席、欠課、遅刻のいずれも発生していない学生も表示するよう修正する。

設問3

 個人別に、欠席回数、欠課回数、遅刻回数、換算欠席日数、判定結果を求めて表示しなさい。換算欠席日数は次の式で求める。

  換算欠席日数=欠席の合計+(欠課の合計+欠席の合計)÷6

 また、判定結果は次の式で求める。

  換算欠席日数が40.0以上・・・失格
  換算欠席日数が25.0以上・・・危険
  換算欠席日数が25.0未満・・・NULL(何も表示しない)


[ TOP ]