SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

直近開催のイベントはこちら!

HRzine Day 2024 Winter

2024年2月1日(木)12:00~17:40

主要製品スペック一覧

人事業務の効率・確度・精度を高めるために欠かせないHRテクノロジー。その主な製品の機能を分野ごとに比較できる資料群です。製品検討の参考資料としてご活用ください。

人事労務管理システム<br>主要製品スペック一覧 2023

人事労務管理システム
主要製品スペック一覧 2023

その他のスペック一覧

タレントマネジメントシステム<br>主要製品スペック一覧 2023

タレントマネジメントシステム
主要製品スペック一覧 2023

採用管理システム<br>主要製品スペック一覧 2023

採用管理システム
主要製品スペック一覧 2023

落とし穴はこれで回避! Oracle DB 12c SQL基礎 弱点克服スクール | 第9回

集合演算子を使ったSQL文と落とし穴のORDER BY

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena

その他の結合演算子と結合演算子との組み合わせ

では、最後は頭の中でSQL文の実行結果をイメージしながら、解答していただきましょう。

問4

問合せの結果が同じになるのはどのSQL文ですか。2つ選択してください。

  • a. SELECT department_id,manager_id from departments
    UNION SELECT department_id,employee_id from employees;
  • b. SELECT department_id,manager_id from departments
    MINUS SELECT department_id,employee_id from employees;
  • c. SELECT department_id,manager_id from departments
    INTERSECT SELECT department_id,employee_id from employees;
  • d. SELECT d.department_id,d.manager_id from departments d
    JOIN employees e ON d.department_id = e.department_id
    AND d.manager_id = e.employee_id;
  • e. SELECT d.department_id,d.manager_id from departments d
    LEFT OUTER JOIN employees e ON d.department_id = e.department_id
    AND d.manager_id = e.employee_id;

各選択肢の実行例を次に示します。INTERSECTと結合は共通する行を求めることができます。したがって、正解は選択肢cとdです。

SQL> --選択肢c
SQL> SELECT department_id,manager_id from departments
  2  INTERSECT SELECT department_id,employee_id from employees;

DEPARTMENT_ID MANAGER_ID
------------- ----------
           10        200
           20        201
           30        114
           40        203
           50        121
           60        103
           70        204
           80        145
           90        100
          100        108
          110        205

11行が選択されました。

SQL> --選択肢d
SQL> SELECT d.department_id,d.manager_id from departments d
  2  JOIN employees e ON d.department_id = e.department_id
  3  AND d.manager_id = e.employee_id;

DEPARTMENT_ID MANAGER_ID
------------- ----------
           90        100
           60        103
          100        108
           30        114
           50        121
           80        145
           10        200
           20        201
           40        203
           70        204
          110        205

11行が選択されました。

選択肢aのUNIONは共通しない行も出力します。もし、FULL OUTER JOINが使われていたら、同じ結果にならないか注意して見たほうがいいですね。

SQL> --選択肢a
SQL> SELECT department_id,manager_id from departments
  2  UNION SELECT department_id,employee_id from employees;

DEPARTMENT_ID MANAGER_ID
------------- ----------
           10        200
           20        201
           20        202
    ……(途中省略)……
          260
          270
                     178

124行が選択されました。

選択肢bのMINUSは最初の問合せだけが返す行を出力します。もし、OUTER JOINで外部結合をしており、かつWHERE句で一方の表にしかない行を絞り込んでいたら、注意しましょう。

SQL> --選択肢b
SQL> SELECT department_id,manager_id from departments
  2  MINUS SELECT department_id,employee_id from employees;

DEPARTMENT_ID MANAGER_ID
------------- ----------
          120
          130
          140
    ……(途中省略)……
          260
          270

16行が選択されました。

選択肢eのようにOUTER JOINでもWHERE句で絞り込んでいない場合、共通する行も出力されるので、MINUSと同じ結果にはなりません。

SQL> --選択肢e
SQL> SELECT d.department_id,d.manager_id from departments d
  2  LEFT OUTER JOIN employees e ON d.department_id = e.department_id
  3  AND d.manager_id = e.employee_id;

DEPARTMENT_ID MANAGER_ID
------------- ----------
           90        100
           60        103
          100        108
    ……(途中省略)……
          130
          120

27行が選択されました。

前回、副問合せを解説したときにも言いましたが、「12cSQL試験は難しい」と感じるのは、SQL文およびその実行結果をちゃんとイメージできなければ正解できないためです。

結合、副問合せ、集合演算子のいずれを使っても同じ結果を求められる場合があります。実務では、実行速度やSQL文のメンテナンスのしやすさなどを基準にどの方法を使うかを判断するでしょうが、12cSQL試験に合格するためには「こういう結果を求めたいんだけど」という問いに対して、いずれを使ってもSQL文が書けるようにしておいてください。

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena
めざせオラクルマスターホルダー! Oracle DB 12c SQL基礎 弱点克服スクール連載記事一覧

もっと読む

この記事の著者

林 優子(ハヤシ ユウコ)

日本オラクル株式会社の教育ビジネスのスタートアップを全面的に支援し、バージョン5の頃からOracleに携わるベテラン講師として知る人も多い。Oracle認定講師を表彰するExcellent Instructorを連続受賞。1ランク上のITスペシャリスト育成を目標に、データベース分野にとどまらず「プレゼンテーション」、「ロジカルシンキング」などのトレーニングも手がけている。著書に『オラクルマスター教科書』シリーズ(翔泳社)、『プロとしてのデータモデリング入門』(SBクリエイティブ)など。その他、雑誌執筆、著書・メディア出演も多数。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事をシェア

  • Facebook
  • Twitter
  • Pocket
  • note
  • hatena
HRzine
https://hrzine.jp/article/detail/249 2016/11/08 14:00

Special Contents

AD

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

HRzine Day(エイチアールジン・デイ)は、人が活き会社が成長する人事のWebマガジン「HRzine」が主催するイベントです。毎回、人事の重要課題を1つテーマに設定し、識者やエキスパードが持つ知見・経験を、参加者のみなさんと共有しています。

2024年2月1日(木)12:00~17:40

イベントカレンダーを見る

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング