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>
|
|