アツシマンダイβ

学びながら、ゆるくアウトプットします。

第3回:演算子やSQL関数を使おう。

      2017/11/26

さてさて、SQLでマーケティングということで、前回はSELECT句、FROM句、WHERE句が基本だよということを書きました。

続いて、演算子やSQL関数を見ていきたいと思います。

SELECT句で演算子やSQL関数を使おう

まずは、SELECT句で演算子やSQL関数を使います。

これで分析する際にできることの幅がぐっと広がることになりますので、ちょっとややこしいですが、覚えてくださいね。

演算子

演算子は+(足し算)、−(引き算)、*(掛け算)、/(割り算)なので簡単です。

以下のようなテーブルがあったとします。

在庫テーブル
商品名 原価 定価 個数
椅子 1000 2000 10
5000 8000 2
本棚 1500 3000 5
ソファ 20000 30000 1

椅子が全部売れたら利益はいくらだっけ。

———————————————————

SELECT (定価 – 原価)*個数 as 椅子利益

FROM 在庫テーブル

WHERE 商品名 = ‘椅子’

———————————————————

出力:

椅子利益
10000

———————————————————

ですね。

ちょっとSQL文を簡単に説明しておきます。

まずは「FROM 在庫テーブル」、「WHERE 商品名 = ‘椅子’」、ここは前回の範囲なので問題ないですね。

この時点で、WHERE句によってフィルタが掛かった、以下のようなテーブルになっていることを頭の中でイメージしてください。

商品名 原価 定価 個数
椅子 1000 2000 10

続いて、SELECT句ですが、一個売れるたびに定価から原価を引いた値が利益になるので、そこに個数を掛けてやればいいですね。「SELECT (定価 – 原価)*個数」となるわけです。

最後に、「as 椅子利益」とあります。asは、データ項目名を指定する関数です。

これは、演算子を使うと、項目名がないため、新しい名前を付けておこうというわけです。結果、出力時にデータ項目名が「椅子利益」となっています。asを付けておかないと、ここが空白になってしまいます。

今回のような計算であればデータ項目名が空白でも問題がないのですが、将来的にサブクエリなどを使うようになると、データ項目名をつけておく癖があったほうがいいので、asも覚えておいてください。というかasはめちゃくちゃ使います。

SQL関数

次にSQL関数です。

商品の種類は何種類あったっけ。

在庫テーブル
商品名 原価 定価 個数
椅子 1000 2000 10
5000 8000 2
本棚 1500 3000 5
ソファ 20000 30000 1

と、まぁこの程度であれば数えたほうが早いのですが、何千レコードとあると数えられないですよね。

そこで、数える関数を使います。

———————————————————

SELECT COUNT(distinct 商品名) as 商品種類数

FROM 在庫テーブル

———————————————————

出力:

商品種類数
4

———————————————————

なんとなく分かるでしょうか。

まず、今回もasを使って、データ項目名を付けています。これはいいですね。

次に、COUNT(データ項目名)です。COUNT関数は、そのデータ項目の数を数えます。今回のような場合は、COUNT(商品名)だけでもいいのですが、同じ商品名が複数レコードあるようなテーブルであれば、前回やったdistinctが必要ですね。

たとえば、以下のようなテーブルを考えます。

売上テーブル
商品名 定価 個数 購入者 日付
椅子 2000 1 たろう 20170301
8000 1 たろう 20170301
本棚 3000 1 じろう 20170301
椅子 2000 2 はなこ 20170301
椅子 2000 1 じろう 20170301

今日は何人のお客さまが来てくれたのでしょうか。

———————————————————

SELECT COUNT(distinct 購入者) as 本日の購入者数

FROM 売上テーブル

WHERE 日付 = ‘20170301’

———————————————————

出力:

本日の購入者数
3

———————————————————

これで3人だとわかりますが、distinctをしていないとすべてのレコード数を数えてしまうため、5と出力されてしまいます。

SQL関数とは、COUNT関数のように、データ項目の中にないデータを計算することができるので非常に便利です。

COUNT関数以外にも、いろいろな関数があるので、ぜひゆっくりと覚えていきましょう。

WHERE句で演算子を使う

続いて、WHERE句でも演算子が使えるよという話をしたいと思います。

またまた在庫テーブルを使います。

在庫テーブル
商品名 原価 定価 個数
椅子 1000 2000 10
5000 8000 2
本棚 1500 3000 5
ソファ 20000 30000 1

さて、この中から利益率が50%以上の商品だけ取り出したいとき、どうSQL文を書けばいいでしょうか。

原価率が50%以下であればいいので、

———————————————————

SELECT 商品名

FROM 在庫テーブル

WHERE (原価/定価) <= 0.5

———————————————————

出力:

商品名
椅子
本棚

———————————————————

ですね。

計算結果が正しいかを確認するために、原価率も出力しておくのもいいですね。

———————————————————

SELECT 商品名, 原価/定価 as 原価率

FROM 在庫テーブル

WHERE (原価/定価) <= 0.5

———————————————————

出力:

商品名 原価率
椅子 0.5
本棚 0.5

———————————————————

ということで、今回はSELECT句やWHERE句で演算子やSQL関数が使えるよという話でした!

SQLでマーケティング講座

「SQLとは」~「SQLの書き方」、「SQLを用いたデータ分析」などについて、書いていきたいと思います。

第1回:SQLを使うとデータベースから好きなデータを抽出できる。

第2回:SQLの基本は、SELECT句、FROM句、WHERE句。

第3回:演算子やSQL関数を使おう。

 - SQL