SQLのGROUP BY句でデータを集計してみよう!【サンプル有り】
  • facebookページ
  • twitterページ
  • 2020.12.01

    SQLのGROUP BY句でデータを集計してみよう!【サンプル有り】

    データベースに格納されたデータを、1つのカテゴリとして集計したい場面は実務上多いものです。

    本記事では、SQLのGROUP BY句を利用したデータ集計の方法について、サンプルコードを交えながらご紹介していきます。

    SQLのGROUP BY句


    SQLで利用可能な「GROUP BY」句は、指定したキー項目単位でグループ化することが出来る命令文です。

    基本構文

    SQLでGROUP BY句を利用する際の基本構文は下記の通りです。

    注意点

    GROUP BY句を利用してデータを取得する場合、SELECT句に指定出来るカラムは、GROPU BY句に指定した項目か集計関数のみです。

    テーブルにカラムが存在するとしても、グループ化の条件に指定していないデータを取得することは出来ません。

    集計関数とは

    集計関数という新たな用語が出てきましたが、下記のような関数を指します。

    集計関数一覧
    • SUM: 合計を計算
    • AVG: 平均を計算
    • COUNT: レコード数を計算
    • MAX: 項目の最大値を取得
    • MIN: 項目の最小値を取得

    GROUP BY句とセットで利用することで、グループ化した項目の様々な集計処理が可能となります。

    SQLのGROUP BY句をサンプルで理解しよう


    ではここからはサンプルデータを使って、実際の使い方についてご紹介していきます。

    サンプルデータ

    今回は「animal」という名前でテーブルを作成し、下記のデータを用意しました。

    グループ化してデータを取得する

    GROUP BY句を使ったSELECT文でデータを取得しましょう。

    「type」項目をグループ化のキー項目としてデータを取得すると下記のような表示となります。

    重複が取り除かれ、グループ化出来た名称が表示されています。

    集計関数を利用する

    続いて、集計関数を用いてグループ化したデータの件数を取得してみましょう。

    グループ化された各項目の件数を計算し、表示しています。

    複数キーのグループ化

    グループ化する条件は2つ以上の項目を設定することも可能です。

    今回は「type」と「age」項目をグループ化の条件に設定してみましょう。

    「type」項目が「dog」、「age」が「5」のデータのみが複数件存在することをご確認頂けます。

    GROUP BY句で条件を指定する


    グループ化するデータを条件によって絞りこむことも可能です。

    通常SQLでは「WHERE」句を利用しますが、GROUP BY句では「HAVING」句による条件指定も利用可能です。

    WHERE句によるグループ化の条件指定

    まずはWHERE句を利用してグループ化するデータを絞り込んでみましょう。

    「type」列が「dog」のデータのみを抽出条件に指定しています。

    HAVING句によるグループ化の条件指定

    では同様の条件指定をHAVING句を利用して記述してみましょう。

    「HAVING 条件式」の形式で、GROUP BY句の後ろに記述します。

    同じ結果が取得出来ていますね。

    WHERE句とHAVING句で何が違う?

    結果が同じであれば、WHERE句とHAVING句で何が違うのか気になるところですよね。

    両者の違いは、実行される順番が異なる点です。

    「WHERE」句はグループ化の前に実行され、「HAVING」句はグループ化の後に実行されます。

    例えば、2件以上のデータが存在するグループのみを抽出したい場合、WHERE句に記述すると下記のようなエラーとなり

    HAVING句に記述すると

    HAVING句では条件式として機能します。

    さいごに: SQLのGROUP BY句を利用した集計処理は実務に必須の知識


    本記事では、SQLでGROUP BY句を利用したデータ集計の方法についてご紹介してきました。

    データの集計処理は業務系のシステム開発を中心に頻出処理の1つです。

    初心者の方には、WHERE句とHAVING句の違いなどを含めて、少しややこしく感じる部分もあるかと思いますが、1つ1つ確実に理解しGROUP BY句を使いこなせるようにチャレンジしてみてください。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE