0. 実験ユーザー「dicdic」でコネクトする。
SQL> conn dicdic/Oracle11g
接続されました。
SQL>
|
1. 【STDDEV関数】
STDDEV関数は、標準偏差を求める。
SQL> Select STDDEV(TOEIC) FROM TT01_学生;
STDDEV(TOEIC)
-------------
261.009496
SQL>
|
2. 【VARIANCE関数】
VARIANCE関数は、ばらつきを求める。
SQL> Select VARIANCE(TOEIC) FROM TT01_学生;
VARIANCE(TOEIC)
---------------
68125.9567
SQL>
|
3. 【MEDIAN関数】
MEDIAN関数は、中央値を求める。(平均じゃないよ)
SQL> Select MEDIAN(TOEIC) FROM TT01_学生;
MEDIAN(TOEIC)
-------------
586
SQL>
|
4. 【RANK】
順位を求めるのに、RANKというのを使うと、同じ得点の人を同じ順位にして表示してくれる。
おっと、しかしこれだと得点の低い順になってしまう。
SQL> Select 氏名,TOEIC, RANK() OVER(order by TOEIC) FROM TT01_学生;
氏名 TOEIC RANK()OVER(ORDERBYTOEIC)
---------------------------------------- ---------- ------------------------
富田 金蔵 120 1
小平 昇 120 1
稲垣 登美子 121 3
平本 昭男 121 3
長瀬 勝治 121 3
野中 健吉 122 6
松永 瑠奈 124 7
高田 綾花 124 7
宮崎 幸一郎 124 7
宇都 晴美 124 7
西田 菜々 125 11
下山 朋美 125 11
高岡 範久 125 11
岸本 健二 125 11
・
・
・
長嶋 勝治 2210
岩瀬 敏夫 2210
田中 一平 2210
久米 貢 2210
高嶋 美香 2210
春日 利吉 2210
福原 翔子 2210
森谷 俊章 2210
3429行が選択されました。
SQL>
|
5. 高得点の順にしたければ、descにすればよいが、それだとNull(TOEIC未受験者)がトップに
なってしまうので、それをNVL関数を使って回避する。
SQL> Select 氏名,TOEIC, RANK() OVER(order by NVL(TOEIC,0) desc) FROM TT01_学生;
氏名 TOEIC RANK()OVER(ORDERBYNVL(TOEIC,0)DESC)
---------------------------------------- ---------- -----------------------------------
土谷 久典 998 1
亀田 正志 998 1
須藤 貞次 998 1
安永 花鈴 998 1
後藤 富子 998 1
斉藤 靖彦 996 6
野呂 寛治 996 6
荻原 健志 996 6
半田 英夫 995 9
熊倉 花梨 995 9
木本 真桜 995 9
新垣 昌孝 994 12
大坪 祥子 994 12
田端 辰也 992 14
石野 勇三 992 14
新井 丈夫 992 14
宮島 雅哉 991 17
・
・
・
長嶋 勝治 2210
岩瀬 敏夫 2210
田中 一平 2210
久米 貢 2210
高嶋 美香 2210
春日 利吉 2210
福原 翔子 2210
森谷 俊章 2210
3429行が選択されました。
SQL>
|
6. 【DENSE_RANK】
同じ得点の人を同じ順位で表示してくれるのはよいが、「番号が飛ぶのはイヤだ」という場合には、
DENSE_RANKというのが用意されている。
SQL> Select 氏名,TOEIC, DENSE_RANK() OVER(order by NVL(TOEIC,0) desc) FROM TT01_学生;
氏名 TOEIC DENSE_RANK()OVER(ORDERBYNVL(TOEIC,0)DESC)
---------------------------------------- ---------- -----------------------------------------
土谷 久典 998 1
亀田 正志 998 1
須藤 貞次 998 1
安永 花鈴 998 1
後藤 富子 998 1
斉藤 靖彦 996 2
野呂 寛治 996 2
荻原 健志 996 2
半田 英夫 995 3
熊倉 花梨 995 3
木本 真桜 995 3
新垣 昌孝 994 4
大坪 祥子 994 4
田端 辰也 992 5
石野 勇三 992 5
新井 丈夫 992 5
宮島 雅哉 991 6
・
・
・
長嶋 勝治 800
岩瀬 敏夫 800
田中 一平 800
久米 貢 800
高嶋 美香 800
春日 利吉 800
福原 翔子 800
森谷 俊章 800
3429行が選択されました。
SQL>
|
7. 【LEAD関数】
LEAD関数は、次のレコードの値を併記できるので、「次は誰?」というような場合に用いる。
たとえば、学生番号は飛び番なので、直近の次の番号の人に連絡網を流すような場合、「次は誰か?」を
表示させるには、次のようにする。「次の人」の値が、一つずつズレて表示されているのが分かるかな?
そして最後の人は、当然次がないのでNULLになります(下の例では伊東君)。
SQL> Select 学生番号,氏名, LEAD(学生番号) OVER(order by 学生番号) 次の人 FROM TT01_学生;
学生番号 氏名 次の人
--------- ---------------------------------------- ---------
2007B0114 窪田 信玄 2007B0132
2007B0132 須藤 貞次 2007B0156
2007B0156 黒田 比呂美 2007B0169
2007B0169 望月 淳三 2007B0179
2007B0179 岩田 昌信 2007B0188
2007B0188 菅沼 和奏 2007B0190
2007B0190 岩谷 彦太郎 2007B0193
2007B0193 島津 昌孝 2007B0195
2007B0195 下川 里沙 2007B0202
2007B0202 島本 史織 2007B0208
・
・
・
2014B0641 福永 竜雄 2014B0642
2014B0642 寺崎 綾 2014B0643
2014B0643 鳴海 汐里 2014B0644
2014B0644 会田 翔子 2014B0645
2014B0645 牧野 直吉 2014B0646
2014B0646 長沼 重彦 2014B0647
2014B0647 町田 雪子 2014B0648
2014B0648 伊東 昇一
3429行が選択されました。
SQL>
|
|