並べ替え(CSVファイルをADOで扱う⑮)

CSVファイルをADOで扱う連載の15回目です。前回の記事はこちらになります。 hirocom777.hatenadiary.org

並べ替え

前回は、LIKEを使った文字データの選択方法をご紹介しました。

f:id:HiroCom777:20211016204837j:plain

今回は並べ替えに挑戦してみようと思います。読込みと同時に指定の条件で並べ替えて表示ができると便利です。

今回もSQLを指定してCSVファイルを確認できるツール(CSV_ReaderSQL)を使います。ツールは以下からダウンロードしてください。

CSV_ReaderSQL110.zip - Google ドライブ

今までと同じようにCSV_ReaderSQLで操作対象のファイル(Test.csv)があるフォルダーを指定しておきましょう。'Test.csv'の内容は以下の様になっているものとします。

"名前","クラス","点数"
"渡邊国男","A","76"
"吉永安子","B","67"
"松川章平","A","85"
"棚橋梨沙","A","90"
"村木道雄","C","83"
"国分円","C","90"
"菅正一郎","B","95"
"杉山龍宏","B","77"
"大槻香苗","C","88"

読込み結果を並べ替えて表示

ORDER BYを使用すると、読み込んだ結果を指定した要素で並べ替えて表示できます。上の表を点数の高い順に並べなおしてみましょう。SQLコマンド欄に以下を入力して実行ボタンを押してみてください。

   SELECT * FROM [Test.csv] ORDER BY 点数 DESC

結果は以下の様になりました。

名前 クラス 点数
菅正一郎 B 95
国分円 C 90
棚橋梨沙 A 90
大槻香苗 C 88
松川章平 A 85
村木道雄 C 83
杉山龍宏 B 77
渡邊国男 A 76
吉永安子 B 67

点数が高い順に並べ替えて表示しました。ORDER BYは、以下の様に表記します。

ORDER BY 列名 (ACS/DESC)

ASCを指定すると昇順、DESCを指定すると降順に並べ替えます。この部分を省略すると昇順となります。ORDER BYは、WHEREと併せて使用する事もできます。今度はBクラスのメンバーだけを点数の低い順に並べて表示してみましょう。以下のSQLを入力して実行してみてください。

   SELECT * FROM [Test.csv] WHERE クラス = 'B' ORDER BY 点数 ASC

以下の結果が得られます。

名前 クラス 点数
吉永安子 B 67
杉山龍宏 B 77
菅正一郎 B 95

複数の並べ替え

読み込んだ結果を複数の要素で並べ替えたい場合があります。今度はクラス毎に点数の高い順に表示してみましょう。以下のSQLを入力して実行しましょう。

   SELECT * FROM [Test.csv] ORDER BY クラス ASC,点数 DESC

結果は以下の様になりました。クラス別に点数の高い順に表示されています。

名前 クラス 点数
棚橋梨沙 A 90
松川章平 A 85
渡邊国男 A 76
菅正一郎 B 95
杉山龍宏 B 77
吉永安子 B 67
国分円 C 90
大槻香苗 C 88
村木道雄 C 83

並べ替えた結果の先頭から指定行数だけ表示

並べ替えて表示をする場合、その先頭部分だけ表示したい場合があります。TOPを使用すると、表示する件数を指定できます。点数が上位5人だけを表示してみましょう。以下のSQLを入力して実行してください。

   SELECT TOP 5 * FROM [Test.csv] ORDER BY 点数 DESC

上位5人だけが表示されました。

名前 クラス 点数
菅正一郎 B 95
国分円 C 90
棚橋梨沙 A 90
大槻香苗 C 88
松川章平 A 85

それにしても、TOPはこんなころに書くんですね。実を言うと、SELECTと後に続くフィールド名指定の後にはALL(すべて表示する)という指定が省略されています。上のSQL文のTOPALLと書き換えると、何も書かない時と同じ表示になります。その他にもDISTINCTDISTINCTROWを指定することができるのですが、これらは別の機会にご紹介したいと思います。

次回は複数ファイルの読込み

いかがでしょうか。読込みと同時に並べ替えて表示する場面は結構あると思います。次回は、複数のCSVファイルを色々な形で読込んでみようと思います。お楽しみに!!

hirocom777.hatenadiary.org

CSVファイルをADOで扱う連載記事はコチラからどうぞ