SQLでは、膨大なデータが管理されているデータベースを扱うため、様々なデータを取得して分析することができます。
ここでは、MySQLでGROUP BYを活用したデータ取得について簡単に解説します。
【この記事はこんな方に向けて書いています】
・SQLの勉強をしてデータベースを扱ってみたい
・MySQLでGROUP BYを使ってデータをグループ化して分析したい
【目次】
・GROUP BY
・複数カラムでグループ化
・グループ毎のデータ数
・GROUP BYとWHERE
・まとめ
GROUP BYを使うとデータをグループ化できるので細かく分析することができます。
先日の記事で、スーパーの食品コーナーに並んでいる商品を格納したテーブルを作成しました。
商品データを少し変更し、新たにtypeというカラムを追加しました。
テーブル「items」のデータを取得します。
商品データが取得できました。
ここでは、野菜・調味料・飲料にグループ化して、それぞれの平均価格を取得してみます。
GROUP BYを使ってグループ化するときは
SELECT 集計関数(カラム名), カラム名 FROM テーブル名
GROUP BY カラム名;
と記述してEnterを押します。
平均を求める集計関数AVGを使って野菜・調味料・飲料の平均価格を取得しました。
何を取得する?→平均価格とtype
何でグループ化する?→type
というイメージです。
小数点以下の桁数が多いので、FLOORを使い小数点以下切り捨てのデータも取得します。
小数点以下切り捨てのデータを取得できました。
GROUP BYを使って複数カラムでグループ化することもできます。
複数カラムでグループ化するため、賞味期限のカラムを追加しました。
テーブル「items」のデータを取得します。
商品データが取得できました。
カラム「type」と、カラム「best_before」でグループ化したデータを取得します。
このように、複数カラムでグループ化するときは
GROUP BY カラム名, カラム名
と記述します。
野菜・調味料・飲料毎の賞味期限を取得できました。
上記で、野菜・調味料・飲料毎の賞味期限を取得できましたがグループ毎のデータ数が知りたいときはどうすれば良いでしょうか?
集計関数COUNTを使うとデータ数が取得できます。
グループ毎のデータ数が取得できました。
GROUP BYとWHEREを使うことで、特定のデータを取得した上でグループ化することができます。
例えば、「野菜」のデータを取得→賞味期限でグループ化→グループ毎の平均価格を取得してみます。
何を取得する?→平均価格と賞味期限
何のデータで絞る?→野菜のデータ
何でグループ化する?→賞味期限
というイメージです。
まとめ
・GROUP BYを使うとデータをグループ化できるので細かく分析できる
・GROUP BYを使って複数カラムでグループ化することもできる
・GROUP BYとWHEREで特定のデータを取得した上でグループ化することができる
ここまで読んで頂きありがとうございました。
-------------------------------------------------------------------------------------
【関連記事】
SQLの環境構築「MySQL」
SQLの基礎:「MySQLの起動」
-------------------------------------------------------------------------------------
当ブログの記事一覧(カテゴリー別)