CHAPTER 4 · 10 LESSONS · 124 問
実データで分析する
売上や利用者のデータに、ここまでの書き方を組み合わせて答えを出す。
ここまでの章では、「この書き方を覚えよう」という順にレッスンが並んでいた。この章は違うよ。問いのほうが先に来る。
「先月いちばん売れた商品は何か」「リピーターは何割いるか」「売上が落ちている曜日はどこか」。こういう問いに、ここまでで覚えた道具を自分で選んで組み合わせて答えを出す。使う文法に新しいものはほとんど無い。組み立てる力を鍛える章だよ。
実際に手を動かすと分かるけれど、詰まるのは文法ではないことが多い。詰まるのはたいてい問いの読み替えだ。「リピーターは何割いるか」と言われて、そのまま書ける SQL は無い。まず「リピーターとは、2回以上買った人のことだ」と言い直す。次に「購入回数を人ごとに数えて、2以上の人を数える」に直す。ここまで来れば、あとは書くだけだよ。
この読み替えの手順を、意識して身につけてほしい。
- 何を1件と数えるのか をはっきりさせる(注文か、商品か、人か)
- どの表に必要な情報があるか を探す
- 絞るのは集計の前か後か を決める
- 小さく書いて動かし、結果を見てから足していく
最後のものがとくに大事だよ。長いクエリを一息に書いて、答えが合わないと、どこが悪いのか分からなくなる。まず絞り込みだけを書いて結果を見る。正しければ集計を足す。それも合っていたら並べ替えを足す。一段ずつ確かめながら積むのが、結局いちばん速い。
もうひとつ覚えておきたいのが、出た数字を疑うことだよ。SQL は書いたとおりに動くので、間違ったクエリでも堂々と数字を返してくる。エラーが出ないことは、答えが正しいことを意味しない。件数が想定と桁違いに多いときは結合のしかたを疑う。少ないときは、結合で消えた行がないかを疑う。
確かめ方もいくつか持っておくといい。全体の件数を先に数えておいて、絞り込んだ後の件数と比べる。合計を出したら、いくつかの行を手で足して合っているか見る。地味だけれど、こうした確認が桁の間違いを拾ってくれる。
もうひとつ、答えを出したあとに「それで何が言えるか」まで考える習慣もつけたい。「木曜の売上が低い」という数字が出たとして、そこから何をすべきかは数字だけでは決まらない。木曜が定休日の店が多いのかもしれない。データは判断の材料であって、判断そのものではないよ。
この章のレッスンは、答えにたどり着くまでに何度か書き直すことになるはずだ。それが普通だと知っておいてほしい。一発で正しいクエリを書ける人はいない。書いて、結果を見て、違ったら直す。その回数が経験になる。
問いに答えが出たら、それを1文で言えるかも確かめてみよう。「木曜の売上は他の曜日より3割低い」のように言い切れれば、その分析は伝わる形になっている。表が出ただけでは、まだ答えたことにならないよ。
書いたクエリは、あとで自分が読み返すことになる。改行とインデントを入れて、命令ごとに行を分けるだけで、読みやすさがまるで違うよ。1行にぎっしり詰めたクエリは、書いた本人でも翌日には読めない。
扱うデータも、これまでの練習用のものより現実に近い形になる。項目が多く、値の入っていない行もあり、そのままでは答えが出ない。きれいに整ったデータは現実にはあまり無いということも、この章で体験しておいてほしいことのひとつだよ。
この章を抜けると、SQL は「勉強したもの」から「使える道具」になる。データを渡されて「これで何が分かる?」と聞かれたときに、自分で問いを立てて答えを出せる。それが目指すところだよ。
この章のレッスン
目的から問いを立てる