実データで分析する

INPUT · スライド

注文を数える

01 / 04

1行が1注文

orders の1行は「だれが・どの商品を・いくつ・いつ」買ったかの記録だよ。

名前は入っていなくて member_iditem_id の番号だけ。でも番号のままでも数えられる。まずは結合なしで規模をつかもう。

02 / 04

件数と個数はちがう

COUNT(*)何回買われたか、SUM(quantity)何個買われたか。似ているようで別の数字だよ。

1回の注文で10個まとめ買いされることもあるから、件数だけ見ていると量を見誤るんだ。

SELECT COUNT(*) AS 件数,       SUM(quantity) AS 個数  FROM orders;

実行結果

15 | 45

03 / 04

番号ごとにまとめる

「会員ごと」なら GROUP BY member_id、「商品ごと」なら GROUP BY item_id。名前が分からなくても、どこに山があるかは番号のままで見えるよ。

SELECT item_id,       COUNT(*) AS 件数,       SUM(quantity) AS 個数  FROM orders  GROUP BY item_id  ORDER BY item_id LIMIT 4;

実行結果

1 | 2 | 5
2 | 1 | 2
3 | 2 | 5
4 | 1 | 2

04 / 04

種類の数を数える

COUNT のかっこの中に DISTINCT を入れると、重複を除いた種類の数が出るよ。「注文したのは何人?」が1行で出せる。

COUNT(member_id) は行の数、COUNT(DISTINCT member_id) は人数。別ものだから気をつけて。ここから書いてみよう。

SELECT COUNT(member_id) AS 行数,       COUNT(DISTINCT member_id)         AS 人数  FROM orders;

実行結果

15 | 10