全ての設問で「単純結合」「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
従業員数を部門別に表示しなさい。結果の表示方法は「部門番号」「部門名」「従業員数」とすること。
設問1
問題1設問1のSQLを「左辺外部結合」「右辺外部結合」「完全外部結合」にした場合、実行結果がそれぞれどうなるか説明しなさい。
設問2
問題1設問6のSQLを、従業員のいない部署も表示するよう修正しなさい。ただし、従業員のいない部署の人数は「0」と表示すること。
設問1
employees表とdepartments表のデカルト積を求めるSQL文を2種類書きなさい。
学生の出席状況を管理するため、次のテーブルを作成した。
<学生マスタ> 学籍番号 NOT NULL NUMBER(6) 学科コード NOT NULL NUMBER(3) 学年 NOT NULL NUMBER(1) クラス NOT NULL CHAR(1)> 出席番号 NOT NULL NUMBER(2) 学生氏名 NOT NULL VARCHAR2(50) 学生フリガナ NOT NULL VARCHAR2(50) 郵便番号 VARCHAR2(8) 住所1 VARCHAR2(100) 住所2 VARCHAR2(100) 電話番号 VARCHAR2(13) 保護者氏名 VARCHAR2(50)
<学科テーブル> 学科コード NOT NULL NUMBER(3) 学科名 NOT NULL VARCHAR2(50) 学科名略称 VARCHAR2(20) 学科名記号 VARCHAR2(4) 修業年限 NOT NULL NUMBER(1)
<出席状況マスタ> 学籍番号 NOT NULL NUMBER(6) 発生日付 NOT NULL DATE 欠席 DEFAULT 0 NUMBER(1) 欠課 DEFAULT 0 NUMBER(1) 遅刻 DEFAULT 0 NUMBER(1) ※ 欠席、欠課、遅刻のいずれかが発生したら、データを作成する
※ 1年ごとにクリアする以下の設問に答えなさい。
設問1
欠席、欠課、遅刻の一覧表をクラス別に表示しなさい。必要な項目は「学科名」「学年」「クラス」「出席番号」「氏名」「発生日付」「欠席」「欠課」「遅刻」とし、「学科コード」「学年」「クラス」「出席番号」の昇順に並べる。また、欠席、欠課、遅刻が発生していない学生は表示しない。
設問2
設問1のSQLを、欠席、欠課、遅刻のいずれも発生していない学生も表示するよう修正する。
設問3
個人別に、欠席回数、欠課回数、遅刻回数、換算欠席日数、判定結果を求めて表示しなさい。換算欠席日数は次の式で求める。
換算欠席日数=欠席の合計+(欠課の合計+欠席の合計)÷6
また、判定結果は次の式で求める。
換算欠席日数が40.0以上・・・失格
換算欠席日数が25.0以上・・・危険
換算欠席日数が25.0未満・・・NULL(何も表示しない)