Home実験室 − No.0059


        No.0059(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関数、MIN関数】
MAX関数とMIN関数は、その名の通り、最大値と最小値を返す。TOEICの最高点と最低点を出してみよう。

SQL> Select MAX(TOEIC),MIN(TOEIC) FROM TT01_学生; MAX(TOEIC) MIN(TOEIC) ---------- ---------- 998 120 SQL>



  2. もちろんGROUP BY句の併用が可能。血液型ごとの最高点と最低点を出してみよう。

SQL> Select RPAD(DECODE(血液型,1,'A',2,'B',3,'O',4,'AB'),3,' ') 血液型, 2 MAX(TOEIC) 最高点,MIN(TOEIC) 最低点 FROM TT01_学生 GROUP BY 血液型; 血液型 最高点 最低点 ------ ---------- ---------- A  998 120 B  995 121 AB 992 126 O  998 124 SQL>



  3. グループ関数を駆使して、とっても素敵な集計クエリを作ることができた。
類題として、学科ごとの集計や学部ごとの集計などを作ってみてはいかが?

SQL> SELECT RPAD(DECODE(血液型,1,'A',2,'B',3,'O',4,'AB'),3,' ') 血液型,COUNT(*) 人数 , 2 COUNT(TOEIC) TOEIC受験者数, COUNT(*)-COUNT(TOEIC) 未受験者数,Round(AVG(TOEIC),1) TOEIC平均, 3 MAX(TOEIC) 最高点,MIN(TOEIC) 最低点 FROM TT01_学生 GROUP BY 血液型; 血液型 人数 TOEIC受験者数 未受験者数 TOEIC平均 最高点 最低点 ------ ---------- ------------- ---------- ---------- ---------- ---------- A  1298 829 469 571.3 998 120 B  767 481 286 554.6 995 121 AB 311 201 110 575.9 992 126 O  1053 698 355 549.1 998 124 SQL>



  4. ごちゃごちゃしてきたので、まったく同じSQL文を改行を挿入しながら記述してみる。
少しは見やすくなったかな?

SQL> SELECT RPAD(DECODE(血液型, 2 1,'A', 3 2,'B', 4 3,'O', 5 4,'AB'),3,' ') 血液型, 6 COUNT(*) 人数 , 7 COUNT(TOEIC) TOEIC受験者数, 8 COUNT(*)-COUNT(TOEIC) 未受験者数, 9 Round(AVG(TOEIC),1) TOEIC平均, 10 MAX(TOEIC) 最高点, 11 MIN(TOEIC) 最低点 12 FROM TT01_学生 GROUP BY 血液型; 血液型 人数 TOEIC受験者数 未受験者数 TOEIC平均 最高点 最低点 ------ ---------- ------------- ---------- ---------- ---------- ---------- A  1298 829 469 571.3 998 120 B  767 481 286 554.6 995 121 AB 311 201 110 575.9 992 126 O  1053 698 355 549.1 998 124 SQL>





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


Home実験室 − No.0059

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