【SQL】グループ化集計・GROUP BYによるデータベースの操作方法

こんにちは、Kosei(@kay_diacc2)です!

こんな方におすすめ!
  • SQL SELECT文と組み合わせた「グループ別集計」する方法を知りたい
  • GROUP BY句の基本構文を理解したい
目次

データベースにおけるグループ別集計|GROUP BYとは

SQLには、SELECT文での検索結果をいくつかのまとまりに分類するグループ化という機能が備わっています。

グループ化はカテゴリ別データ集計において非常に有効な機能です。

例えば、上記に示すような商品別の売上集計表を出力したい場合、買物履歴テーブルの各行を「商品」列の内容でグループ化し、分類した商品毎に売上金額の合計値を算出します。

GROUP BY|SQL基本構文

グループ別集計のSQL基本構文は次のように示されます。

SELECT   [グループ化する列名], [集計関数]
FROM     [テーブル名]
WHERE    [集計前絞込条件]
BROUP BY [グループ化する列名]
HAVING   [集計後絞込条件]

上記のSQL構文を記述した際、グループ化集計による計算の流れは次のようになります。

  1. WHERE句の[集計前絞込条件]によって行を絞り込み
  2. 指定した[グループ化する列名]毎に検索結果を分類
  3. 分類したグループ毎に[集計関数]を用いて集計
  4. SELECT句指定の列名と[グループ化する列名]のマトリックスとして結果を出力
  5. [集計後絞込条件]を指定した場合、集計結果に対してさらに行絞込を実行し結果出力

【参考】GROUP BYと合わせて用いる集計関数一覧

グループ化による集計の際、頻繁に用いる代表的な集計関数と、併用して用いることがある関数を示します。

代表的な集計関数

集計関数概要集計可能なデータ型
SUM合計値を出力数値
AVG平均値を出力数値
MAX最大値を出力数値、日付
MIN最小値を出力数値、日付
COUNT該当レコード数(行数)を出力全データ型

グループ化集計時に併用して用いることがある関数

集計関数概要
ROUND数値の四捨五入結果を出力
TRUNC数値の小数点切り捨て結果を出力
POWER数値のべき乗(2乗、3乗など)を出力
LENGTH文字列の長さを表す数値を出力
REPLACE置換した文字列を出力
SUBSTRING一部分だけ取り出した文字列を出力
CONCAT連結した文字列を出力

GROUP BY演算子を用いたSQL操作事例

GROUP BYを用いたグループ別集計方法の具体例をいくつか紹介します。具体的な活用イメージを掴んでいきましょう!

GROUP BY |SQL基本構文

SELECT     商品, SUM(売上) AS 売上合計
FROM       買い物履歴
GROUP BY   商品

最も基本的な記述です。買物履歴テーブルの「商品」列をグループ化し、商品毎の合計売上金額を算出した例を上記に示します。

GROUP BY|WHERE(事前絞込)

SELECT     商品, SUM(売上) AS 売上合計
FROM       買い物履歴
WHERE      売上>1000
GROUP BY   商品

買物履歴テーブルの「商品」列をグループ化する前に、商品個々の売上金額を事前にフィルタリングし、商品毎の合計売上金額を算出した例を上記に示します。ここでのポイントはWHERE句を用いる点であり、WHERE句が適用されているタイミングに着目しましょう。

GROUP BY|HAVING(集計結果絞込)

SELECT     商品, SUM(売上) AS 売上合計
FROM       買い物履歴
GROUP BY   商品
HAVING     SUM(売上) > 1000

買物履歴テーブルの「商品」列をグループ化し、商品毎の合計売上金額を算出した後、集計結果を合計売上金額で絞り込んだ例を示します。集計後に行を絞込みたい場合、HAVING句を用いるのがポイントです。

データベース・SQL操作まとめ

当サイトではデータベースの設計ノウハウやSQL操作における基本構文の解説記事を多数配信しています。合わせてご覧ください。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる