2017年12月5日火曜日

SQL分析をスタートするために最低限覚えておくべきこと

大きなデータを使うには、SQLは避けて通れません。
とはいえ、SQLで分析には、大変な労力となります。

大変な労力となる理由:いっぱいSQLがある

SQLといっても、MySQLやPostgreSQLから、BigQueryなどのクラウドサービスまで多様な種類のSQLが存在するので、細かく覚えないといけないためです。
基本はどれも一緒ですが、分析までしようとすると、データベース独自の関数を覚える必要があります。
さらに、一つの会社で、複数のデータベースを使っている場合があるので、完璧先生を目指すとなると長い年月が必要となります。

じゃあどうしよう→基本だけ覚える

基本はselect句、from句、where句だけ覚えてしまえば、技術者以外の単に仕事で使いたい人が作業する分には十分です。仕事で使う場面というは「いつ、誰が何をいくら買ったか?」「どのページを何回みたか?」などを指しています。

初心者の方に説明しますと、DB(データベース)は大きなエクセルファイルです。
その中にtable(テーブル)と呼ばれるシートがいくつか入っています。
あまりにもデータが大きいので、エクセルのように一度に開くと大変なことになりますが、必要な列だけとか、必要な行だけ抽出するための操作がSQLとなります。

SQLのはじめに

エクセルでsheet1全体を開く操作をSQLで書くと、
----
 SELECT * FROM sheet1
----
となります。
selectの後ろの*印は全部の列を指定する。
fromの後ろのfromはどのテーブルかを指定する。といった具合です。

sheet1に一億行のデータが入っているとPCが大変なことになる(基本的にはならずエラーを返してくれるはず)ので、そういう場合は、limitをつけてちょっとだけ見せてとおことわりを入れます。

----
 SELECT * FROM sheet1 limit 100
----

とすれば、最初の100行だけ持ってくるので、安心です。
これはデータの中身を確認したいときによく使うフレーズです。

①SELECT句の役割について

SQLは非常にシンプルな作りなので、上記でだいたいの構造は理解できると思いますが、
select句は、カラム(列)を選択する句です。
変数名を記入し、複数ある場合はカンマでつなぎます。
* はワイルドカードですべての行を取得します。 

②FROM句の役割について

FROM句はどのテーブルからデータを取得するのかを指定します。
例えば FROM salesなどと書くとsalesテーブルからデータを取得します。

③WHERE句の役割について

WHERE句では、抽出するデータの条件を設定します。
例えば、「WHERE  age > 70 」と書くと、70歳超の人のデータだけが出力されます。

次のステップはGROUP BY句やJOINを覚えることだが

まずは、①〜③とlimitを使い、取得したいデータを自在に操作できるようになることが重要です。データ範囲の指定は、基本的な操作です。しかし正確に集計をする上では、実は非常に難しい操作であったりもします。
抽出したいデータを取り出し、エクセル等のツールで集計&分析を正確にできるようになってから、GROUP BY句を覚えるので十分だと思います。

まとめ

まずは、select 〜〜〜 from 〜〜〜 where 〜〜〜 と正確に抽出したいデータ範囲を指定することから始めよう!
集計は無理にSQLで行おうとせず最初は、エクセルやTableauを使っちゃおう!