SQLデータをソート、グループ化、要約化するための10 Tips
翻訳校正:原井彰弘
データを分析するためにどのようなSQLを構築すればよいか、10個のTipsを紹介する。
分析可能なSQLデータを整えるには、SQL言語の中でも特定の節や演算子の使い方を理解する必要がある。本稿で紹介するTipsでは、望む結果を得るためにはどのようにステートメントを構築すればよいかということを紹介する。
適切な意味を持つようにデータを整えるのはだ。ときには、単純にソートを行うだけでよい場合もある。また、ときにはグループ化を行って分析、要約化する必要がある場合もある。幸い、SQLでは多数の節や演算子が提供されているため、それらを用いてソートやグループ化、要約化を行うことが可能だ。以下に述べるTipsを読めば、いつソートを行うべきか、いつグループ化するべきか、そしていつどのように要約化するべきかが、明確に理解できるようになるだろう。それぞれの節と演算子に関するより詳しい情報はBooks Onlineを参照して欲しい。
#1:ソートによって順番を定める
たいていの場合、データにとって本当に必要なのは順序くらいである。SQLのORDER BY節を用いると、データをアルファベット順もしくは番号順に整理することが可能だ。ソートを行うと、同じ値はグループのようになって同じ場所にソートされるわけだが、その一見グループのように見えるものは単なるソート結果であり、本物のグループではない。ORDER BYではそれぞれのレコードを表示するが、グループは一般に複数のレコードを表すものなのである。
#2:グループ化によって同じ値を除去する
ソートとグループ化の大きな違いは、ソートが(表示レコード数の制限がある場合はその中で)すべてのレコードを表示する一方、グループ化ではすべてのレコードは表示されないということである。GROUP BY節では、同じ値は一つのレコードにまとめられるのだ。以下の例では、GROUP BY節を用いることによって、複数の同じZIPコード(郵便番号)が含まれているテーブルから、重複を取り除いたリストを返している。
SELECT ZIP FROM Customers GROUP BY ZIP
GROUP BYとSELECTのカラムリストには、グループを定義したカラムのみを含めなければならない。つまり、SELECTのリストとGROUP BYのリストは一致させる必要があるのだ。ただし、それには一つ例外があり、SELECTのリストには集約関数を含めることが可能である(GROUP BYでは集約関数は使用できない)。
もう一つ、GROUP BYでは結果のソートは行わないことに注意しておく必要がある。グループをアルファベット順もしくは番号順に並び替えるには、ORDER BY節(#1)を追加する必要がある。また、GROUP BY節ではカラムの別名を参照することはできない。グループ化を行うカラムは、データに含まれているものでなければならないのだ。ただし、結果に関してはそのカラムが含まれていなくても構わない。
#3:グループ化の前にデータを限定する
WHERE節を用いることによって、GROUP BYでグループ化を行うデータを限定することが可能だ。たとえば、以下のステートメントではケンタッキー州の顧客のみを対象として、ユニークなZIPコードをリストとして返している。
SELECT ZIP FROM Customers WHERE State = 'KY' GROUP BY ZIP
ここで重要なのは、WHEREのフィルターはGROUP BY節が評価される前に適用されるということである。
GROUP BYと同様に、WHEREも集約関数をサポートしていない。
- 8人の推薦記事
- 1人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(5)
- ホワイトペーパー
- 話題のタグ
グーグル、JavaScriptプログラミングツールをリリース
Windowsの歴史 Windows Server 2008編:同じカーネルを持つ「Vista」とは対照的に早くから支持を得たサーバOS
Windowsの歴史 Windows Server 2003 R2編:安定性と先進性の両立目指す「R2」の先駆けとなったOS
モジラ、「Firefox 3.6」の第1ベータ版をリリース
100万円で実現!中小企業の情報漏えい対策
企業ITシステムの企画、構築、運用のイロハ
最大32個のセンサーが電力を徹底管理!
【最終警告】パンデミック対策特集
大丈夫?あなたの会社のセキュリティ対策
―エン・ジャパン厳選求人☆毎週更新―
進むストレージ環境の見直し