
ゆうき( @BASEBALLY15 )です^^
前回に,MySQLの基本的な内容を学習しました.
今回は,データの計算方法について教えて欲しいです.
わかりました^^
それでは,今回は, データの合計,平均,最大値,最小値などを計算する方法についてご紹介します.
よろしくお願いします・・・
(Udemy『はじめてのMySQL・データ分析入門』を参考)

目次
sum,avg,max,min,count,group byを使ってみよう!

MySQL Workbenchを使います.
前回と同様に,
サンプルデータベースの『world』の中の,『city』テーブルを使います.
#『world』というサンプルデータベースを使う
use world;
#全体表示
select * from city;
ID | Name | CountryCode | District | Population | |
---|---|---|---|---|---|
1 | Kabul | AFG | Kabol | 1780000 | |
2 | Qandahar | AFG | Qandahar | 237500 | |
3 | Herat | AFG | Herat | 186800 | |
4 | Mazar-e-Sharif | AFG | Balkh | 127800 | |
5 | Amsterdam | NLD | Noord-Holland | 731200 | |
6 | Rotterdam | NLD | Zuid-Holland | 593321 | |
7 | Haag | NLD | Zuid-Holland | 440900 | |
8 | Utrecht | NLD | Utrecht | 234323 | |
9 | Eindhoven | NLD | Noord-Brabant | 201843 | |
10 | Tilburg | NLD | Noord-Brabant | 193238 | |
それでは,コードを見ていきましょう⤵
sum,avg,max,minを求めよう!
それぞれの意味は以下のとおりです.
- sum→合計
- avg→平均
- max→最大値
- min→最小値
上のテーブルの”Population“について,処理を行っていきます.
#"Population"の合計と平均と最小値と最大値を表示する
select sum(Population), avg(Population), max(Population), min(Population) from city;
sum(Population) | avg(Population) | max(Population) | min(Population) | |
---|---|---|---|---|
1429559884 | 350468.2236 | 10500000 | 42 |
このように,まとめて表示することができます.
次に,テーブルのデータ数を求めたいと思います.
countでデータ数を求めよう!
上で示しているテーブルは,10個しか表示していませんが,
実際に業務などで使う場合は,数千,数万というデータを扱わなければいけません.
その際に,データがいくつあるのかを調べておくために『count』を使います.
#データ数を求める
select count(*) from city;
count(*) | |
---|---|
4079 |
この結果,cityテーブルのデータ数は,
4079個
あることが分かりました.
(演習)指定した地区の個数を求めてみよう!
これを少し,応用させて,”Holland “という名前が付いている ” District “の個数を求めたいと思います.
#"Holland"という地区の数を求める
select District, count(*) from city where District like "%Holland%";
District | count(*) | |
---|---|---|
Noord-Holland | 11 |
%で Holland を囲むことで,その文字を含む地区のみを取り出すことができます.
結果, Holland という名前が付いている地域が11個あることが分かりました.
地区ごとにgroup byを使ってまとめよう!
最後に,group by句を使って,地区ごとにまとめます.
#地域でまとめて抽出
select District, sum(Population) from city group by District;
District | sum(Population) | |
---|---|---|
Kabol | 1780000 | |
Qandahar | 237500 | |
Herat | 186800 | |
Balkh | 127800 | |
Noord-Holland | 1219028 | |
Zuid-Holland | 1476710 | |
Utrecht | 360593 | |
Noord-Brabant | 684649 | |
Groningen | 172701 | |
Gelderland | 545548 |
このコードをまとめると,以下のようになります.
- cityテーブルを使う(from)
- Districtでまとめる(group by)
- DistrictとPopulationの合計(sum(Population))を選択(select)する
もし,『group by』が無かったら,どのように表示されるのでしょうか?
select District, sum(Population) from city ;
District | sum(Population) | |
---|---|---|
Kabol | 1429559884 |
このように,全体の合計が一行目に表示されてしまいます.
これでは,地域ごとの人口数が分からないですね.
終わりに
今回は,MySQLについて,2回目の投稿でした.
コードを見てもらうと分かるのですが,Excelを使うよりも早くに計算することができます.
ぜひ,みなさんもMySQLを使ってみてください^^
それでは・・・
Q &A
参考資料
MySQL Workbench インストール方法