CSVファイルをADOで扱う連載の15回目です。前回の記事はこちらになります。 hirocom777.hatenadiary.org
並べ替え
前回は、LIKEを使った文字データの選択方法をご紹介しました。
今回は並べ替えに挑戦してみようと思います。読込みと同時に指定の条件で並べ替えて表示ができると便利です。
今回も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文のTOPをALLと書き換えると、何も書かない時と同じ表示になります。その他にもDISTINCT、DISTINCTROWを指定することができるのですが、これらは別の機会にご紹介したいと思います。
次回は複数ファイルの読込み
いかがでしょうか。読込みと同時に並べ替えて表示する場面は結構あると思います。次回は、複数のCSVファイルを色々な形で読込んでみようと思います。お楽しみに!!