0. 実験ユーザー「dicdic」でコネクトする。
SQL> conn dicdic/Oracle11g
接続されました。
SQL>
|
1. 【ソートの基本】 1993年12月1日〜9日生まれの人を、生年月日でソートして表示したい。
SQL> SELECT 氏名,生年月日 FROM TT01_学生 Where 生年月日 Like '1993120%' order by 生年月日;
氏名 生年月日
---------------------------------------- ----------
早川 雄三 19931201
越智 七菜 19931202
林田 康正 19931202
碓井 幸平 19931202
佐野 博久 19931202
徳永 公子 19931204
名取 新平 19931204
狩野 忠良 19931204
吉崎 由佳 19931204
川本 新平 19931204
相原 隆吾 19931204
板垣 千代 19931204
相沢 亀太郎 19931204
堀口 嘉子 19931205
横井 三喜 19931205
河崎 清三 19931205
本橋 清人 19931205
山根 沙彩 19931205
齋藤 行夫 19931205
新井 丈夫 19931205
亀田 伸也 19931206
佐久間 秋雄 19931206
松下 蒼依 19931206
大山 弓月 19931206
上村 真穂 19931206
河村 詠一 19931206
松浦 雅俊 19931207
榎本 結月 19931207
沖 貴文 19931207
滝沢 章司 19931207
浅沼 欧子 19931207
内野 心優 19931207
星野 夏音 19931208
尾崎 喜太郎 19931208
川添 昇一 19931208
木村 春男 19931208
依田 秀雄 19931209
森山 真依 19931209
岡 忠吉 19931209
植松 幸仁 19931209
小野田 泰介 19931209
滝川 善成 19931209
42行が選択されました。
SQL>
|
2. 【明示的な昇順ソート】 誕生日が早い順。やっていることは上と同じ。
SQL> SELECT 氏名,生年月日 FROM TT01_学生 Where 生年月日 Like '1993120%' order by 生年月日 ASC;
氏名 生年月日
---------------------------------------- ----------
早川 雄三 19931201
越智 七菜 19931202
林田 康正 19931202
碓井 幸平 19931202
佐野 博久 19931202
徳永 公子 19931204
名取 新平 19931204
狩野 忠良 19931204
吉崎 由佳 19931204
川本 新平 19931204
相原 隆吾 19931204
板垣 千代 19931204
相沢 亀太郎 19931204
堀口 嘉子 19931205
横井 三喜 19931205
河崎 清三 19931205
本橋 清人 19931205
山根 沙彩 19931205
齋藤 行夫 19931205
新井 丈夫 19931205
亀田 伸也 19931206
佐久間 秋雄 19931206
松下 蒼依 19931206
大山 弓月 19931206
上村 真穂 19931206
河村 詠一 19931206
松浦 雅俊 19931207
榎本 結月 19931207
沖 貴文 19931207
滝沢 章司 19931207
浅沼 欧子 19931207
内野 心優 19931207
星野 夏音 19931208
尾崎 喜太郎 19931208
川添 昇一 19931208
木村 春男 19931208
依田 秀雄 19931209
森山 真依 19931209
岡 忠吉 19931209
植松 幸仁 19931209
小野田 泰介 19931209
滝川 善成 19931209
42行が選択されました。
SQL>
|
3. 【降順ソート】 誕生日が遅い順
SQL> SELECT 氏名,生年月日 FROM TT01_学生 Where 生年月日 Like '1993120%' order by 生年月日 DESC;
氏名 生年月日
---------------------------------------- ----------
依田 秀雄 19931209
森山 真依 19931209
滝川 善成 19931209
小野田 泰介 19931209
岡 忠吉 19931209
植松 幸仁 19931209
星野 夏音 19931208
川添 昇一 19931208
木村 春男 19931208
尾崎 喜太郎 19931208
沖 貴文 19931207
松浦 雅俊 19931207
浅沼 欧子 19931207
内野 心優 19931207
榎本 結月 19931207
滝沢 章司 19931207
亀田 伸也 19931206
佐久間 秋雄 19931206
松下 蒼依 19931206
大山 弓月 19931206
上村 真穂 19931206
河村 詠一 19931206
山根 沙彩 19931205
齋藤 行夫 19931205
新井 丈夫 19931205
河崎 清三 19931205
堀口 嘉子 19931205
横井 三喜 19931205
本橋 清人 19931205
徳永 公子 19931204
相沢 亀太郎 19931204
川本 新平 19931204
吉崎 由佳 19931204
狩野 忠良 19931204
名取 新平 19931204
相原 隆吾 19931204
板垣 千代 19931204
越智 七菜 19931202
佐野 博久 19931202
林田 康正 19931202
碓井 幸平 19931202
早川 雄三 19931201
42行が選択されました。
SQL>
|
4. 【Null値を含むデータのソート】 ここから先の例では、TOEIC列をソートに使用する。
下のように、降順にすると Nullは一番上に表示されてしまう。Nullはゼロみたいなもんなのに....。
SQL> SELECT 氏名,TOEIC FROM TT01_学生 Where 生年月日 Like '1993120%' order by TOEIC DESC;
氏名 TOEIC
---------------------------------------- ----------
板垣 千代
河村 詠一
沖 貴文
山根 沙彩
岡 忠吉
依田 秀雄
狩野 忠良
松下 蒼依
大山 弓月
植松 幸仁
浅沼 欧子
新井 丈夫 992
榎本 結月 942
相沢 亀太郎 921
佐久間 秋雄 746
堀口 嘉子 670
佐野 博久 657
川本 新平 622
上村 真穂 578
内野 心優 558
滝川 善成 557
齋藤 行夫 535
本橋 清人 490
吉崎 由佳 487
木村 春男 484
亀田 伸也 437
横井 三喜 415
相原 隆吾 414
松浦 雅俊 404
徳永 公子 373
越智 七菜 322
早川 雄三 272
滝沢 章司 271
川添 昇一 255
星野 夏音 250
河崎 清三 243
小野田 泰介 232
森山 真依 226
尾崎 喜太郎 195
林田 康正 194
碓井 幸平 150
名取 新平 139
42行が選択されました。
SQL>
|
5. 【Null値を含むデータのソート】 NULLS LASTオプションを指定すると、Nullを最後にしてくれる。
SQL> SELECT 氏名,TOEIC FROM TT01_学生 Where 生年月日 Like '1993120%' order by TOEIC DESC NULLS LAST;
氏名 TOEIC
---------------------------------------- ----------
新井 丈夫 992
榎本 結月 942
相沢 亀太郎 921
佐久間 秋雄 746
堀口 嘉子 670
佐野 博久 657
川本 新平 622
上村 真穂 578
内野 心優 558
滝川 善成 557
齋藤 行夫 535
本橋 清人 490
吉崎 由佳 487
木村 春男 484
亀田 伸也 437
横井 三喜 415
相原 隆吾 414
松浦 雅俊 404
徳永 公子 373
越智 七菜 322
早川 雄三 272
滝沢 章司 271
川添 昇一 255
星野 夏音 250
河崎 清三 243
小野田 泰介 232
森山 真依 226
尾崎 喜太郎 195
林田 康正 194
碓井 幸平 150
名取 新平 139
河村 詠一
沖 貴文
山根 沙彩
岡 忠吉
依田 秀雄
狩野 忠良
松下 蒼依
大山 弓月
植松 幸仁
浅沼 欧子
板垣 千代
42行が選択されました。
SQL>
|
6. 【Null値を含むデータのソート】 NULLS FIRSTオプションを指定すると、Nullを最初にしてくれる。お好みで。
SQL> SELECT 氏名,TOEIC FROM TT01_学生 Where 生年月日 Like '1993120%' order by TOEIC NULLS FIRST;
氏名 TOEIC
---------------------------------------- ----------
板垣 千代
河村 詠一
沖 貴文
山根 沙彩
岡 忠吉
依田 秀雄
狩野 忠良
松下 蒼依
大山 弓月
植松 幸仁
浅沼 欧子
名取 新平 139
碓井 幸平 150
林田 康正 194
尾崎 喜太郎 195
森山 真依 226
小野田 泰介 232
河崎 清三 243
星野 夏音 250
川添 昇一 255
滝沢 章司 271
早川 雄三 272
越智 七菜 322
徳永 公子 373
松浦 雅俊 404
相原 隆吾 414
横井 三喜 415
亀田 伸也 437
木村 春男 484
吉崎 由佳 487
本橋 清人 490
齋藤 行夫 535
滝川 善成 557
内野 心優 558
上村 真穂 578
川本 新平 622
佐野 博久 657
堀口 嘉子 670
佐久間 秋雄 746
相沢 亀太郎 921
榎本 結月 942
新井 丈夫 992
42行が選択されました。
SQL>
|
7. 【複数列でソート指定できる】列名をカンマで区切ることで複数列に対してソート順を指定できる。エクセルみたい。
SQL> SELECT 氏名,生年月日,学科コード FROM TT01_学生 Where 生年月日 Like '1993120%' order by 生年月日 ,学科コード;
氏名 生年月日 学科コード
---------------------------------------- ---------- ----------
早川 雄三 19931201 2445
越智 七菜 19931202 1521
碓井 幸平 19931202 1521
林田 康正 19931202 2101
佐野 博久 19931202 2703
名取 新平 19931204 1293
徳永 公子 19931204 1293
川本 新平 19931204 1350
吉崎 由佳 19931204 1578
狩野 忠良 19931204 2101
相沢 亀太郎 19931204 2359
板垣 千代 19931204 2531
相原 隆吾 19931204 2789
堀口 嘉子 19931205 1350
山根 沙彩 19931205 1578
横井 三喜 19931205 1635
河崎 清三 19931205 1635
新井 丈夫 19931205 2101
本橋 清人 19931205 2273
齋藤 行夫 19931205 2617
上村 真穂 19931206 1293
佐久間 秋雄 19931206 1350
大山 弓月 19931206 1521
亀田 伸也 19931206 1521
河村 詠一 19931206 1578
松下 蒼依 19931206 2703
沖 貴文 19931207 1293
内野 心優 19931207 1521
松浦 雅俊 19931207 1578
榎本 結月 19931207 2445
浅沼 欧子 19931207 2531
滝沢 章司 19931207 2617
川添 昇一 19931208 2015
尾崎 喜太郎 19931208 2101
木村 春男 19931208 2445
星野 夏音 19931208 2617
植松 幸仁 19931209 1293
依田 秀雄 19931209 1350
森山 真依 19931209 1464
小野田 泰介 19931209 2445
滝川 善成 19931209 2531
岡 忠吉 19931209 2531
42行が選択されました。
SQL>
|
8. もちろん、複数列で、降順と昇順を混在できる。
SQL> SELECT 氏名,生年月日,学科コード FROM TT01_学生 Where 生年月日 Like '1993120%' order by 生年月日 ,学科コード DESC;
氏名 生年月日 学科コード
---------------------------------------- ---------- ----------
早川 雄三 19931201 2445
佐野 博久 19931202 2703
林田 康正 19931202 2101
碓井 幸平 19931202 1521
越智 七菜 19931202 1521
相原 隆吾 19931204 2789
板垣 千代 19931204 2531
相沢 亀太郎 19931204 2359
狩野 忠良 19931204 2101
吉崎 由佳 19931204 1578
川本 新平 19931204 1350
徳永 公子 19931204 1293
名取 新平 19931204 1293
齋藤 行夫 19931205 2617
本橋 清人 19931205 2273
新井 丈夫 19931205 2101
横井 三喜 19931205 1635
河崎 清三 19931205 1635
山根 沙彩 19931205 1578
堀口 嘉子 19931205 1350
松下 蒼依 19931206 2703
河村 詠一 19931206 1578
亀田 伸也 19931206 1521
大山 弓月 19931206 1521
佐久間 秋雄 19931206 1350
上村 真穂 19931206 1293
滝沢 章司 19931207 2617
浅沼 欧子 19931207 2531
榎本 結月 19931207 2445
松浦 雅俊 19931207 1578
内野 心優 19931207 1521
沖 貴文 19931207 1293
星野 夏音 19931208 2617
木村 春男 19931208 2445
尾崎 喜太郎 19931208 2101
川添 昇一 19931208 2015
岡 忠吉 19931209 2531
滝川 善成 19931209 2531
小野田 泰介 19931209 2445
森山 真依 19931209 1464
依田 秀雄 19931209 1350
植松 幸仁 19931209 1293
42行が選択されました。
SQL>
|
9. Select列に指定した順番の番号をソート列に使用できる。でも判りづらいから、あんまりやりたくないね。
SQL> SELECT 氏名,生年月日,学科コード FROM TT01_学生 Where 生年月日 Like '1993120%' order by 2 ,3 DESC;
氏名 生年月日 学科コード
---------------------------------------- ---------- ----------
早川 雄三 19931201 2445
佐野 博久 19931202 2703
林田 康正 19931202 2101
碓井 幸平 19931202 1521
越智 七菜 19931202 1521
相原 隆吾 19931204 2789
板垣 千代 19931204 2531
相沢 亀太郎 19931204 2359
狩野 忠良 19931204 2101
吉崎 由佳 19931204 1578
川本 新平 19931204 1350
徳永 公子 19931204 1293
名取 新平 19931204 1293
齋藤 行夫 19931205 2617
本橋 清人 19931205 2273
新井 丈夫 19931205 2101
横井 三喜 19931205 1635
河崎 清三 19931205 1635
山根 沙彩 19931205 1578
堀口 嘉子 19931205 1350
松下 蒼依 19931206 2703
河村 詠一 19931206 1578
亀田 伸也 19931206 1521
大山 弓月 19931206 1521
佐久間 秋雄 19931206 1350
上村 真穂 19931206 1293
滝沢 章司 19931207 2617
浅沼 欧子 19931207 2531
榎本 結月 19931207 2445
松浦 雅俊 19931207 1578
内野 心優 19931207 1521
沖 貴文 19931207 1293
星野 夏音 19931208 2617
木村 春男 19931208 2445
尾崎 喜太郎 19931208 2101
川添 昇一 19931208 2015
岡 忠吉 19931209 2531
滝川 善成 19931209 2531
小野田 泰介 19931209 2445
森山 真依 19931209 1464
依田 秀雄 19931209 1350
植松 幸仁 19931209 1293
42行が選択されました。
SQL>
|
10. 【計算結果でソートができる】 その場で生成した計算結果の列を使ってもソートできる。
でも、TOEIC未受験の人の合計がNullになっちゃうなぁ
SQL> SELECT 氏名,単位数,TOEIC,単位数+TOEIC FROM TT01_学生 Where 生年月日 Like '1993120%' order by 単位数+TOEIC DESC;
氏名 単位数 TOEIC 単位数+TOEIC
---------------------------------------- ---------- ---------- ------------
板垣 千代 208
河村 詠一 48
沖 貴文 126
山根 沙彩 114
岡 忠吉 134
依田 秀雄 80
狩野 忠良 134
松下 蒼依 206
大山 弓月 115
植松 幸仁 129
浅沼 欧子 57
新井 丈夫 207 992 1199
榎本 結月 206 942 1148
相沢 亀太郎 120 921 1041
佐久間 秋雄 201 746 947
川本 新平 203 622 825
堀口 嘉子 117 670 787
佐野 博久 129 657 786
内野 心優 201 558 759
上村 真穂 122 578 700
本橋 清人 206 490 696
滝川 善成 114 557 671
齋藤 行夫 111 535 646
横井 三喜 202 415 617
松浦 雅俊 202 404 606
木村 春男 120 484 604
吉崎 由佳 114 487 601
徳永 公子 206 373 579
亀田 伸也 132 437 569
相原 隆吾 123 414 537
越智 七菜 200 322 522
星野 夏音 207 250 457
河崎 清三 209 243 452
林田 康正 200 194 394
早川 雄三 118 272 390
滝沢 章司 114 271 385
川添 昇一 112 255 367
小野田 泰介 131 232 363
尾崎 喜太郎 125 195 320
森山 真依 86 226 312
碓井 幸平 125 150 275
名取 新平 114 139 253
42行が選択されました。
SQL>
|
11. 自分で指定した列別名を、ソート列の指定に使用できる。
TOEIC未受験の人の合計がNullになっちゃうなぁ。これを何とかしたいなぁ。
SQL> SELECT 氏名,単位数,TOEIC,単位数+TOEIC ごうけい FROM TT01_学生 Where 生年月日 Like '1993120%' order by ごうけい DESC;
氏名 単位数 TOEIC ごうけい
---------------------------------------- ---------- ---------- ----------
板垣 千代 208
河村 詠一 48
沖 貴文 126
山根 沙彩 114
岡 忠吉 134
依田 秀雄 80
狩野 忠良 134
松下 蒼依 206
大山 弓月 115
植松 幸仁 129
浅沼 欧子 57
新井 丈夫 207 992 1199
榎本 結月 206 942 1148
相沢 亀太郎 120 921 1041
佐久間 秋雄 201 746 947
川本 新平 203 622 825
堀口 嘉子 117 670 787
佐野 博久 129 657 786
内野 心優 201 558 759
上村 真穂 122 578 700
本橋 清人 206 490 696
滝川 善成 114 557 671
齋藤 行夫 111 535 646
横井 三喜 202 415 617
松浦 雅俊 202 404 606
木村 春男 120 484 604
吉崎 由佳 114 487 601
徳永 公子 206 373 579
亀田 伸也 132 437 569
相原 隆吾 123 414 537
越智 七菜 200 322 522
星野 夏音 207 250 457
河崎 清三 209 243 452
林田 康正 200 194 394
早川 雄三 118 272 390
滝沢 章司 114 271 385
川添 昇一 112 255 367
小野田 泰介 131 232 363
尾崎 喜太郎 125 195 320
森山 真依 86 226 312
碓井 幸平 125 150 275
名取 新平 114 139 253
42行が選択されました。
SQL>
|
12. 【ソートの際のNullの処理】 NVL関数を使って、Nullをゼロとして扱えば、正確なソートが可能になる。
でも、SQL文はどんどん長くなる。
SQL> SELECT 氏名,単位数,NVL(TOEIC,0),単位数+NVL(TOEIC,0) ごうけい FROM TT01_学生 Where 生年月日 Like '1993120%' order by ごうけい DESC;
氏名 単位数 NVL(TOEIC,0) ごうけい
---------------------------------------- ---------- ------------ ----------
新井 丈夫 207 992 1199
榎本 結月 206 942 1148
相沢 亀太郎 120 921 1041
佐久間 秋雄 201 746 947
川本 新平 203 622 825
堀口 嘉子 117 670 787
佐野 博久 129 657 786
内野 心優 201 558 759
上村 真穂 122 578 700
本橋 清人 206 490 696
滝川 善成 114 557 671
齋藤 行夫 111 535 646
横井 三喜 202 415 617
松浦 雅俊 202 404 606
木村 春男 120 484 604
吉崎 由佳 114 487 601
徳永 公子 206 373 579
亀田 伸也 132 437 569
相原 隆吾 123 414 537
越智 七菜 200 322 522
星野 夏音 207 250 457
河崎 清三 209 243 452
林田 康正 200 194 394
早川 雄三 118 272 390
滝沢 章司 114 271 385
川添 昇一 112 255 367
小野田 泰介 131 232 363
尾崎 喜太郎 125 195 320
森山 真依 86 226 312
碓井 幸平 125 150 275
名取 新平 114 139 253
板垣 千代 208 0 208
松下 蒼依 206 0 206
岡 忠吉 134 0 134
狩野 忠良 134 0 134
植松 幸仁 129 0 129
沖 貴文 126 0 126
大山 弓月 115 0 115
山根 沙彩 114 0 114
依田 秀雄 80 0 80
浅沼 欧子 57 0 57
河村 詠一 48 0 48
42行が選択されました。
SQL>
|
© 2011-2011 Amateur Laboratory of ORACLE
|