NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2015.12.02

【初心者入門編】MySQLのコマンドで数値集計する方法をマスターしよう vol.1

やまと

こんにちは、エンジニアのやまとです。
今回は、MySQLのコマンドで数値集計する方法の基本を伝授したいと思います。

SQLコマンドは難しそうに見えますが、実はとても簡単です。僕の前職では、営業さんなどエンジニアでない方もSQLをバシバシ叩いて活用していたくらいです(笑)初心者の方でもすぐに覚えられる内容なので、基本を押さえたいという方はぜひご覧ください!

MySQLとは?
MySQLは、世界でもっとも使われている、オープンソースのデータベースです。WordPressでも採用されており、弊社の記事でもよく紹介されています。

MySQLにおける集計の基本的な考え方

MySQLでは、以下のような考え方でデータを集計します。

SELECT なにを
FROM どこから
WHERE どのように
ORDER BY ◯◯順に
GROUP BY ◯◯ごと

それでは、実際にそれぞれのコマンドの書き方とイメージ図を見ていきましょう!

※ちなみに当記事では

  • 「テーブルA」などをサンプルのテーブル
  • 「F1、F2」などをサンプルのフィールド

としています。

MySQLのコマンドの書き方

SELECT

どのフィールドのデータが欲しいかを選びます。

書き方

SELECT F1,F2 FROM テーブルA;

スクリーンショット 2015-11-09 15.02.41

こちらではひとつ、または複数データを読み込みます。今回は、F1、F2のカラムを指定していますが、

SELECT * FROM テーブルA;

とすると全てのデータをテーブルごと持ってこれます。

スクリーンショット 2015-11-09 15.02.19

FROM

上記SELECTの説明にも、すでに出てきていますね。
どのテーブルからデータが欲しいかをここで指定します。

FROMの後にテーブル名を入力しましょう!

WHERE

いろいろな条件によって絞り、データを読み込むことができます。

書き方

1つの条件を指定する場合は、次のようになります。

SELECT * FROM テーブルA WHERE F1='a';

スクリーンショット 2015-11-10 10.36.14

 

複数の条件を指定する場合は、次のようになります。

SELECT * FROM テーブルA WHERE F1='a' AND F2 ='a';
SELECT * FROM テーブルA WHERE F1='a' OR F2 ='a';

スクリーンショット 2015-11-09 15.03.25
▲ 「SELECT * FROM テーブルA WHERE F1=’a’ AND F2 =’a’;」の結果
ひとつのフィールドから文字を複数指定する場合は、次のように「IN」を使います。

SELECT * FROM テーブルA WHERE F1 IN (a,b)

スクリーンショット 2015-11-09 22.20.52
ある程度の範囲内を条件にしてデータを読み込む場合は、次のように「BETWEEN」を使います。

SELECT F1 FROM テーブルA WHERE F1 BETWEEN 1 AND 3;

スクリーンショット 2015-11-09 22.21.05

 

次は、よりあいまいな条件でデータを読み込んでみましょう。

下記の「LIKE」は文字列と一致するかを比較する関数で、「%」は「0文字以上の任意の文字列」の意味です。そのため、「LIKE ‘東京都%’」で「東京都から始まる文字列すべて」を対象とすることができます。

SELECT F1 FROM テーブルA WHERE F1 LIKE '東京都%';

スクリーンショット 2015-11-09 22.21.17

ORDER BY

昇順、または降順の並びでデータを読み込みます。

書き方

昇順の並びでデータを読み込みます。

SELECT * FROM テーブルA ORDER BY F1 ASC;

スクリーンショット 2015-11-09 22.21.30

 

降順の並びでデータを読み込みます。

SELECT * FROM テーブルA ORDER BY F1 DESC;

スクリーンショット 2015-11-09 22.21.35

GROUP BY

特定の列をキーにして合計値や平均値などのデータを読み込みます。
今回は関数も使ってみましょう。

書き方

グループごとの数を出すときはこちらです。下記では、性別ごとに【GROUP BY 性別】、国籍の数の合計【COUNT(国 籍)】を求めることができます。

SELECT 性別,COUNT(国 籍) FROM テーブルA GROUP BY 性別;

スクリーンショット 2015-11-09 22.22.37

 

グループごとの合計を出すときはこちらです。下記では、品物ごとに【GROUP BY 品物】、値段の合計額【SUM(値段)】を求めることができます。

SELECT 品物,SUM(値段) FROM テーブルA GROUP BY 品物;

スクリーンショット 2015-11-09 22.22.46

 

グループごとの平均を出すときはこちらです。下記では、性別ごとに【GROUP BY 性別】、年齢の平均値【AVG(年齢)】を求めることができます。

SELECT 性別,AVG(年齢) FROM テーブルA GROUP BY 性別;

スクリーンショット 2015-11-09 22.22.53

さいごに

いかがでしたか?

今回は、単一テーブル内で集計する方法のみを紹介しましたが、実際には複数テーブルをJOIN(結合)して集計するJOIN句などもたくさん使われます。次回はJOINを始め、UNIONやその他小技を紹介しようかと思っているので、どうぞご期待ください!

それでは(・▽・)ノ