01 / 04
1行が1注文
orders の1行は「だれが・どの商品を・いくつ・いつ」買ったかの記録だよ。
名前は入っていなくて member_id と item_id の番号だけ。でも番号のままでも数えられる。まずは結合なしで規模をつかもう。
実データで分析する
INPUT · スライド
01 / 04
orders の1行は「だれが・どの商品を・いくつ・いつ」買ったかの記録だよ。
名前は入っていなくて member_id と item_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