MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのグループ関数(集計関数)とは?種類と使い方を徹底解説

MySQLのグループ関数(集計関数)とは?

グループ関数(集計関数)とは、複数の行からなるグループに対して適用される関数のことです。個々の行ではなく「値の集合」を対象として処理を行い、平均値・合計値・最大値・最小値などを1つの結果として返します。通常はGROUP BY句と組み合わせて使われ、データの集計や統計処理において欠かせない機能です。

また、グループ関数には入力値がNULLの場合にその値を自動的に無視するという特徴があります。これにより、欠損データが含まれるテーブルでも正しく集計できるようになっています。

主なグループ関数の一覧

MySQLで利用できる代表的なグループ関数を以下の表にまとめました。

No.関数名と説明
1AVG()
引数の平均値を返します。
2BIT_AND()
ビット単位のAND演算結果を返します。
3BIT_OR()
ビット単位のOR演算結果を返します。
4BIT_XOR()
ビット単位のXOR演算結果を返します。
5COUNT()
検索条件に一致した行数を返します。
6COUNT(DISTINCT)
重複を除いた、異なる値の件数を返します。
7GROUP_CONCAT()
グループ内の複数の値を連結した1つの文字列を返します。
8MAX()
グループ内の最大値を返します。
9MIN()
グループ内の最小値を返します。
10STD()
母標準偏差を返します。
11STDDEV()
母標準偏差を返します(STD()の別名です)。
12STDDEV_POP()
母標準偏差を返します。
13STDDEV_SAMP()
標本標準偏差を返します。
14SUM()
グループ内の値の合計を返します。
15VAR_POP()
母分散を返します。
16VAR_SAMP()
標本分散を返します。
17VARIANCE()
母分散を返します(VAR_POP()の別名です)。

グループ関数の基本的な使い方

ここでは、商品情報を格納するproductsテーブルを例に、代表的なグループ関数の使い方を見ていきましょう。

テーブル全体を集計する

SELECT
  AVG(price) AS 平均価格,
  MAX(price) AS 最高価格,
  MIN(price) AS 最低価格,
  COUNT(*)   AS 登録件数
FROM products;

このクエリを実行すると、テーブル内すべての商品に対して平均・最高・最低の価格と登録件数が、それぞれ1行の結果として返されます。

GROUP BY句と組み合わせる

SELECT
  category,
  AVG(price) AS カテゴリ別平均価格,
  COUNT(*)   AS 商品数
FROM products
GROUP BY category;

GROUP BY句を使うことで、カテゴリごとなど特定のグループ単位で集計できます。売上分析やレポート作成の際に非常によく使われるパターンです。

まとめ

グループ関数は、複数の行を対象に集計処理を行うための重要な関数群です。AVG()COUNT()SUM()MAX()MIN()の5つは特に使用頻度が高く、GROUP BY句との組み合わせを覚えておくと、データベースでの集計作業が格段に効率化します。用途に応じて標準偏差系やビット演算系の関数も活用してみてください。

  1. C#の仮想関数(virtualメソッド)とは?基本と使い方を実例付きで解説

    仮想関数(virtualメソッド)とは C#のvirtualキーワードは、メソッド、プロパティ、インデクサー、イベントを修飾するために使用されます。基底クラスで定義した関数を、それを継承する派生クラスで独自に実装し直したい場合に、その関数を「仮想関数」として宣言します。 仮想関数は、継承先のクラスごとに異なる実装を持つことができ、実際にどの実装が呼び出されるかは実行時に決定されます。この仕組みによって、オブジェクト指向プログラミングにおける重要な概念であるポリモーフィズム(多態性)が実現されます。 仮想関数の宣言方法 仮想関数は、メソッドの戻り値の型の前に「virtual」キーワードを付ける

  2. C#の静的メンバー関数(staticメソッド)とは?特徴と使い方を実例付きで解説

    C#における静的メンバー関数(staticメソッド)は、クラスのインスタンスを作成しなくても呼び出せる特別なメソッドです。この記事では、静的関数の基本的な特徴と、実際のコード例を使った使い方をわかりやすく解説します。 静的メンバー関数の主な特徴 静的メンバー関数には、以下のような重要な特徴があります。 静的変数のみにアクセス可能: 静的関数の内部では、静的(static)な変数やメンバーにしかアクセスできません。インスタンス変数には直接アクセスできない点に注意が必要です。 オブジェクト生成前から存在する: 静的関数はクラスがロードされた時点で存在するため、オブジェクト(インスタンス)が作成