
SQL Procedureを使ったデータセットの並び替えについて紹介します。
使用するサンプルデータ
今回は臨床研究の解析にどんな統計ソフトウェアが使用されているかを調査した論文のデータを使用します。
便宜上、Aと名前を付けて使います。
サンプルデータA
実行結果です。
並べ替えは、ORDER BY句
SQLで並び替えする場合は、ORDER BY
を使用します。
基本的にORDER BY
はSQL文の最後に記載し、1回しか記載できません。
例えば、countで並び替えたい場合は次のようなコードで実行可能です。
ORDER BY
実行結果です。
ASC、DESC
昇順と降順を指定する場合は、ASC
もしくはDESC
を指定します。
冗長なので以降はPROCを省略しています。
昇順と降順
複数条件で並び替えしたい場合は?
複数変数をカンマで区切りで指定すればOKです。
最初に指定された情報での並び替えが優先されます。
複数条件で並び替え
今回のデータでは各レコードが単独でユニークな情報となるため、実行結果は省略します。
任意の順で並べたい場合は?
ORDER BY句でCASE WHEN
を指定すれば、簡単に好きな順番で並べ替えることができます。
いわゆるarbitrary orderです。
SQLの初学者向けの本には書かれてないことが多いので、割と知られていないみたいです。
他にも手段はあると思いますが、個人的にはよく使う便利なテクニックです。
例えば、データセットAについて、「SAS、R、SPSS、STATA、Otherの順で並べたい!」という場合は次のコードで実装できます。
SAS、R、SPSS、STATA、Otherの順
また、「最初は、SAS、R、最後にOther、それ以外は間に来ればどんな順番でも良い!」という場合は次のコードで実装できます。
後からカテゴリ情報が増えた場合もそのまま使用できます。
最初は、SAS、R、最後にOther
まとめ
最後にすべてのコードをまとめておきます。
まとめ