実データで分析する

INPUT · スライド

会員を属性ごとに数える

01 / 04

数えられる形に置きかえる

「会員ってどんな人たちだろう?」のままでは答えが出ない。まず数えられる問いに置きかえよう。

  • 地域ごとに何人いる?
  • 会員種別ごとの平均年齢は?
  • いちばん多い地域はどこ?

どれも COUNTAVG で答えが出る形になったね。

02 / 04

どの列でまとめるか決める

「◯◯ごと」と言われたら、その◯◯が GROUP BY に書く列だよ。地域ごとなら area、会員種別ごとなら plan

集計した列には AS で名前を付けておこう。結果が読みやすくなるし、ORDER BY でもその名前が使えるよ。

SELECT area, COUNT(*) AS 人数  FROM members  GROUP BY area;

実行結果

中央町 | 4
北町 | 5
南町 | 2
東町 | 1

03 / 04

まとめてから並べる

人数の多い順に見たいときは、集計した列で並べればいい。AS で付けた名前をそのまま ORDER BY に書けるよ。

同じ人数のグループがあると順番が決まらない。そういうときは2つ目の並び順を足しておこう。

SELECT area, COUNT(*) AS 人数  FROM members  GROUP BY area  ORDER BY 人数 DESC;

実行結果

北町 | 5
中央町 | 4
南町 | 2
東町 | 1

04 / 04

数える以外もまとめられる

AVGMAX も同じ形で使える。GROUP BY を付ければグループごとの平均や最大が出るよ。

1つのクエリに集計をいくつ並べてもいい。列が横に増えるだけだよ。ここから書いてみよう。

SELECT plan,       COUNT(*) AS 人数,       AVG(age) AS 平均年齢  FROM members  GROUP BY plan;

実行結果

ふつう | 7 | 28
プレミアム | 5 | 40