Home実験室 − No.0062


        No.0062(SQL)
        MAX関数についての追加実験(最高点は誰?)(サブクエリ)

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ
  □Oracleユーザ: dicdic(実験用ユーザー) → 実験環境構築スクリプト

■実験
  0. 実験ユーザー「dicdic」でコネクトする。

SQL> conn dicdic/Oracle11g 接続されました。 SQL>



  1. 【MAX関数のおさらい】
     MAX関数は、指定した列の最大値を見つけて表示する。

SQL> SELECT MAX(TOEIC) FROM TT01_学生; MAX(TOEIC) ---------- 998 SQL>



  2. では、この最高点保有者はいったい誰なのか?
     氏名列をSelectに加えてみようということになるわけだが。。。

SQL> SELECT MAX(TOEIC),氏名 FROM TT01_学生; SELECT MAX(TOEIC),氏名 FROM TT01_学生 * 行1でエラーが発生しました。: ORA-00937: 単一グループのグループ関数ではありません SQL>



  3. 【サブクエリ】
     goup by句を使ってしまうと、その時点で個別のレコードは引っ張ってこれなくなる。
     「グループ化」と「個別抽出」は矛盾しますから。では、最高点をつけた人の
     氏名を抜き出すにはどうするか? それにはWhere句を使います。
     大胆にも、Where句の中にSQL文を丸ごと包んでしまうのです。これをサブクエリといいます。

SQL> SELECT 氏名,TOEIC FROM TT01_学生 Where TOEIC=(Select MAX(TOEIC) FROM TT01_学生); 氏名 TOEIC ---------------------------------------- ---------- 安永 花鈴 998 須藤 貞次 998 後藤 富子 998 土谷 久典 998 亀田 正志 998 SQL>





    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  


Home実験室 − No.0062

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system