GROUP BY句とは
GROUP BY句は、データベースで使用される重要な機能の一つです。
この機能を使うことで、特定の列を基準にして行をグループ化し、それぞれのグループに対して集約関数を適用することができます。
これにより、データの集計や集合ごとの統計情報を取得することができます。
GROUP BY句と集約関数の基本概念や使い方を見てみましょう。
GROUP BY句って何?
GROUP BY句は、データベースのクエリで使用するときに、特定の列の値で行をグループ化するための構文だよ。
GROUP BY句は、SQL(Structured Query Language)クエリで使用される構文の一部です。
GROUP BY句は、特定の列の値に基づいて行をグループ化するために使用されます。
具体的には、GROUP BY句は以下のような場面で使用されます:
- 集計関数(SUM、COUNT、AVG、MAX、MINなど)を使用して、特定の列の値をグループごとに集計する場合。
- 重複する値をまとめて集計したい場合。
- グループごとの統計情報を取得したい場合。
例えば、以下のようなテーブルがあるとします:
| 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句と集約関数の理解を深めてみてください。