de-7. SQLによるデータ分析:
GROUP BYを用いたグループ化
と集約
1
金子邦彦
(データベース演習)
URL: https://www.kkaneko.jp/de/de/index.html
データベースのグループ化と集約の概念
を理解し、基本的な分析手法を習得
Access SQLビューで,集計のための
SQL を実行.結果を確認
2
7-1. イントロダクション
3
リレーショナルデータベースの仕組み
データをテーブルと呼ばれる表形式で保存
テーブル間関連で結ばれる
複雑な構造を持ったデータを効率的に管理することを可能
4
関連
商品
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
購入者
商品番号
X
1
X
3
Y
2
購入
商品テーブルと購入テーブル
5
関連
商品
ID
商品名
単価
1
みかん
50
2
りんご
100
3
メロン
500
購入者
商品番号
X
1
X
3
Y
2
購入
Xさんは、1 みかんと,
3 メロンを買った
Yさんは、 2 りんごを買った
商品テーブルの情報
購入テーブルの情報
集約の方法
6
AVG, MAX, MIN, SUM:平均値,最大値,最小値,合計値を算出
COUNT:行数を計算
得点
居室
85
1
78
2
90
3
82
1
75
2
記録テー
ブル
SELECT AVG(得点) FROM 記録;
結果: 82
SELECT MAX(得点) FROM 記録;
結果: 90
SELECT MIN(得点) FROM 記録;
結果: 75
SELECT SUM(得点) FROM 記録;
結果: 410
SELECT COUNT(*) FROM 記録;
結果: 5
グループ化
グループ化は、同じ属性値を共有するデータ集めるプロセス
例:科目の「国語」、「算数」、「理科」でグループ化
例:受講者の「A」、「B」でグループ化
それぞれの値ごとにグループに分けることで,データの分析が
容易になる
7
科目
受講者
得点
国語
A
85
国語
B
90
算数
A
90
算数
B
96
理科
A
95
科目
受講者
得点
国語
A
85
国語
B
90
科目
受講者
得点
理科
A
95
科目
受講者
得点
算数
A
90
算数
B
96
科目
受講者
得点
国語
A
85
算数
A
90
理科
A
95
科目
受講者
得点
国語
B
90
算数
B
96
科目
受講者
得点
国語
A
85
国語
B
90
算数
A
90
算数
B
96
理科
A
95
成績テーブルの「科目」によるグループ化
成績テーブルには科目、受講者、得点が記載されている
②科目の「国語」、「算数」、「理科」のグループを形成
8
科目 受講者 得点
国語
A
85
国語
B
90
算数
A
90
算数
B
96
理科
A
95
科目
受講者
得点
国語
A
85
国語
B
90
科目
受講者
得点
理科
A
95
科目
受講者
得点
算数
A
90
算数
B
96
グループで、集約(行数、平均、合計など)を実施
9
国語 算数 理科
行数:2
平均:87.5 93 95
合計:175 186 95
データのグループ化を用いた集約
科目
受講者
得点
国語
A
85
国語
B
90
算数
A
90
算数
B
96
理科
A
95
科目
受講者
得点
国語
A
85
国語
B
90
科目
受講者
得点
理科
A
95
科目
受講者
得点
算数
A
90
算数
B
96
SQL における GROUP BY の基礎
GROUP BY は、特定の属性(例:科目,受講者)を基準
として、グループ化を行う
集約GROUP BY組み合わせることで,グループごとの
集約結果を得ることができる
これにより,データの傾向を効率的に分析することが可能
である.
10
GROUP BY の役割と書き方
SQL 問い合わせSELECT …」の中で、GROUP BY を使
用してデータをグループ化する
1つ以上の属性を GROUP BY に指定してグループ化の基
準とする。
SELECT 科目, COUNT(*) FROM 成績 GROUP BY 科目;
11
すべての科目ごとに、受講者の数を計算