【SQL】GROUP BY句と集約関数とは?使い方を解説!

目次

GROUP BY句とは

GROUP BY句は、データベースで使用される重要な機能の一つです。
この機能を使うことで、特定の列を基準にして行をグループ化し、それぞれのグループに対して集約関数を適用することができます。
これにより、データの集計や集合ごとの統計情報を取得することができます。

GROUP BY句と集約関数の基本概念や使い方を見てみましょう。

新人:グラミちゃん

GROUP BY句って何?

エンジニア:プロくん

GROUP BY句は、データベースのクエリで使用するときに、特定の列の値で行をグループ化するための構文だよ。

GROUP BY句は、SQL(Structured Query Language)クエリで使用される構文の一部です。
GROUP BY句は、特定の列の値に基づいて行をグループ化するために使用されます。

具体的には、GROUP BY句は以下のような場面で使用されます:

  1. 集計関数(SUM、COUNT、AVG、MAX、MINなど)を使用して、特定の列の値をグループごとに集計する場合。
  2. 重複する値をまとめて集計したい場合。
  3. グループごとの統計情報を取得したい場合。

例えば、以下のようなテーブルがあるとします:

| id | name    | age | department |
|----|---------|-----|------------|
| 1  | Alice   | 25  | HR         |
| 2  | Bob     | 30  | Finance    |
| 3  | Charlie | 35  | HR         |
| 4  | David   | 28  | IT         |
| 5  | Emma    | 32  | Finance    |

このテーブルを使って、各部署ごとの平均年齢を求める場合、GROUP BY句を使用できます。具体的なSQLクエリは以下のようになります:

SELECT department, AVG(age) AS avg_age
FROM employees
GROUP BY department;

このクエリは、”department”列を基準にして行をグループ化し、各グループごとの”age”列の平均値を計算します。


集約関数とは

集約関数は、グループ化された行に対して計算を行うための関数です。
主な集約関数には、SUM(合計)、AVG(平均)、COUNT(件数)、MAX(最大値)、MIN(最小値)などがあります。

集約関数の役割や代表的な関数を見てみましょう。

新人:グラミちゃん

集約関数って何をするの?

エンジニア:プロくん

集約関数は、グループ化されたデータに対して計算を行うための関数だよ。例えば、SUM関数は合計値を計算するよ。

新人:グラミちゃん

なるほど、つまり平均や合計を求めるときに使うってこと?

エンジニア:プロくん

そうだね。他にも件数を数えたり、最大値や最小値を求めたりするのに使えるよ。

GROUP BY句と集約関数の組み合わせ


GROUP BY句と集約関数の組み合わせは、データベースのクエリを使用して、特定の条件でデータをグループ化し、それぞれのグループに対して集約関数を適用する際に使用されます。これにより、データの集計や要約を行うことができます。

例えば、以下のようなテーブルがあるとします。

|  ID  |  Name   |  Age  |  Salary  |
|------|---------|-------|----------|
|  1   |  John   |   30  |   50000  |
|  2   |  Alice  |   25  |   60000  |
|  3   |  Bob    |   35  |   70000  |
|  4   |  Alice  |   28  |   55000  |
|  5   |  John   |   32  |   65000  |

これを使用して、特定の名前でグループ化し、それぞれのグループの平均年齢と平均給与を計算するクエリを考えてみましょう。

SELECT Name, AVG(Age) AS AvgAge, AVG(Salary) AS AvgSalary
FROM Employees
GROUP BY Name;

このクエリでは、GROUP BY Nameによって名前でグループ化され、各グループに対してAVG(Age)(平均年齢)とAVG(Salary)(平均給与)が計算されます。結果は以下のようになります。

|  Name   |  AvgAge  |  AvgSalary  |
|---------|----------|-------------|
|  John   |    31    |    57500    |
|  Alice  |    26.5  |    57500    |
|  Bob    |    35    |    70000    |

このように、GROUP BY句と集約関数を組み合わせることで、データをグループ化し、それぞれのグループに対して集計を行うことができます。

代表的な集約関数の使い方


各関数の使い方を説明します。

SUM関数の使い方

SUM関数は指定された列の合計値を計算します。

SELECT SUM(column_name) AS total_sum FROM table_name;

例えば、salesテーブルのamount列の合計を求める場合は以下のようになります。

SELECT SUM(amount) AS total_sales FROM sales;

AVG関数の使い方

AVG関数は指定された列の平均値を計算します。

SELECT AVG(column_name) AS average_value FROM table_name;

例えば、gradesテーブルのscore列の平均値を求める場合は以下のようになります。

SELECT AVG(score) AS average_score FROM grades;

COUNT関数の使い方

COUNT関数は指定された条件に一致する行の数を数えます。

SELECT COUNT(*) AS row_count FROM table_name;

例えば、employeesテーブルの行数を求める場合は以下のようになります。

SELECT COUNT(*) AS employee_count FROM employees;

MAX関数の使い方

MAX関数は指定された列の最大値を返します。

SELECT MAX(column_name) AS max_value FROM table_name;

例えば、productsテーブルのprice列の最大値を求める場合は以下のようになります。

SELECT MAX(price) AS max_price FROM products;

MIN関数の使い方

MIN関数は指定された列の最小値を返します。

SELECT MIN(column_name) AS min_value FROM table_name;

例えば、productsテーブルのprice列の最小値を求める場合は以下のようになります。

SELECT MIN(price) AS min_price FROM products;

これらの例では、table_nameはテーブルの名前、column_nameは対象の列の名前を置き換える必要があります。


まとめ

本記事では、GROUP BY句と集約関数の基本概念から具体的な使い方までを解説しました。
GROUP BY句を使用することでデータのグループ化が可能になり、集約関数を組み合わせることでデータの集計や統計情報の取得が容易になります。
データベースクエリを効果的に利用するために、GROUP BY句と集約関数の理解を深めてみてください。

目次