SQLでWhere句を使って条件を絞り分析をしたい
今日はデータ分析で最も多く使われるWhere句の使い方を解説していきます。プロダクト開発や事業企画において、全てのデータの合計値や集計が必要なケースは多くありません。
購入単価を何円以上にするや、購入回数が何回から何回までの間に絞る、多国籍なプラットフォームでは国を絞るなど、何かしらの条件に絞った形でデータを抽出することがほとんどです。Where句を使えば、単一条件でも複数条件でも色々な形でデータを抽出できますので、サクッと覚えてデータ分析へ活かしましょう。
この記事では、例として複数の飲食店を運用するプロダクトをイメージし、飲食店のカテゴリーと店名、売上が管理されているデータベースを想定します。
カテゴリー | 店名 | 売上 |
---|---|---|
レストラン | レストランA | 10000 |
レストラン | レストランB | 20000 |
カフェ | カフェA | 5000 |
カフェ | カフェB | 8000 |
バー | バーA | 7000 |
カフェ | カフェC | 3000 |
レストラン | レストランC | 15000 |
バー | バーB | 9000 |
バー | バーC | 13000 |
単一条件で抽出する場合
まずはWhere句を使って単一条件で絞る場合です。カテゴリーがレストランのものだけを抽出するように文字列で絞る場合は下記のようになります。
select * from where カテゴリー = 'レストラン'
逆にカテゴリーがレストラン以外のものに絞りたい場合は、比較演算子の!=
や<>
を使うことで除外することができます。
select * from where カテゴリー != 'レストラン'
上記の結果と、下記の結果は同じになります。
select * from where カテゴリー <> 'レストラン'
数字などの場合は、比較演算子の>
や>=
を使うことで、それよりも大きいや以上を表すことが出来ます。
売上が10,000円以上であれば下記のような式で表すことができます。
select * from where 売上 >= 10000
同じカラムの複数条件で抽出したい場合
例えばサンプルのテーブルのカテゴリーが100個近くあり、その中から3つのカテゴリーだけを取り出したいケースを想定してください。このように同じカラムの中から複数の値を絞りたい場合は、in
を使います。
select カテゴリー, count(1) from table where カテゴリー in ('レストラン','居酒屋')
例のようなクエリを実行することで、レストランと居酒屋だけのデータを集計することができます。逆に除外したい場合は、not in
を使うと、レストラン・居酒屋以外のデータを抽出することができます。よく使う文法なので覚えてしまいましょう。
範囲を指定したい場合
この場合は、between
句を使います。例えば売上が4000から10000までの間などで絞る場合に使えます。
select * from where 売上 between 4000 and 10000
また日付などで期間を選択する場合もbetween句で集計できます。
where 日付 between '2024-03-01 00:00:00' and '2024-03-31 23:59:59';
複数の条件(ANDやOR)に対応する場合
いままで紹介したWhere句は、いづれも単一な条件でした。例えば、レストランかつ売上が10000以上にすることや、バーまたは売上が5000以上で絞りたいなど複数の条件でANDもしくはORを使いたいときもあると思います。そんな時は下記のように、条件後に続けてandで連続していけば問題ありません。わかりやすくORのときはカッコでくくりましたが、今回のように2つの条件であれば不要です。ANDかつORなど複雑な条件をつくるときは、カッコで囲い一つの条件としてみなせるようにしましょう。
select * from table where カテゴリー = 'レストラン' and 売上 >= 10000
select * from table where (カテゴリー = 'バー' or 売上 >= 5000)
いかがでしょうか?今日は簡単なWhere句の使い方と、どういった条件の時にどう書けば良いかを解説しました。
覚えてしまえば、一生使えるテクニックなので文法と思って覚えてしまいましょう!
最近良くSQLの入門書を聞かれるのでお答えすると、個人的にはSQLの入門はゼロからはじめるデータベース操作がおすすめです。プロダクトマネージャーやプロジェクトマネージャーの入門にももちろんですし、エンジニアを目指している方も参考になる情報が多いと思います。筆者がデータベース操作に携わる時に先輩のエンジニアからお勧めされた本で古いですが概念を理解しやすいですし、分かりやすく書かれていると思います。