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

MySQLのGROUP BY句で複数の列を指定する意味とは?

MySQLのGROUP BY句に複数の列を指定すると、結果セットをより細かいグループへと分割することができます。GROUP BY句で指定する列が増えるほど、グループはより小さく細分化され、きめ細かな集計が可能になります。

これは、単一の列だけでは捉えられない「複数条件の組み合わせごとのデータ」を分析したい場合に非常に有効です。例えば「役職ごと」だけでなく「役職×入社年」といったように、2つ以上の軸でデータを分類して件数や合計値を求めたいときに活用されます。

使用例

以下の例では、employeesテーブルに対して「designation(役職)」と「YEAR(DoJ)(入社年)」という2つの列をGROUP BY句に指定し、それぞれの組み合わせごとにレコード数をカウントしています。

mysql> Select designation, YEAR(Doj), count(*) from employees GROUP BY designation, YEAR(DoJ);

+-------------+-----------+----------+
| designation | YEAR(Doj) | count(*) |
+-------------+-----------+----------+
| Asso.Prof   | 2013      | 1        |
| Asst.Prof   | 2015      | 1        |
| Asst.Prof   | 2016      | 1        |
| Prof        | 2009      | 2        |
| Prof        | 2010      | 1        |
+-------------+-----------+----------+

5 rows in set (0.00 sec)

結果の読み方

この出力結果からは、以下のようなことが分かります。

  • 同じ「Asst.Prof(助教授)」という役職でも、入社年が2015年と2016年では別々のグループとして集計されています。
  • 「Prof(教授)」の2009年入社には2名いるため、count(*)の結果が「2」と表示されています。

このように、GROUP BY句に複数の列を指定することで、列同士の組み合わせごとにグループ化が行われ、より詳細な分析結果を得ることができるのです。

  1. MySQLで単一のWHERE句を使って複数行を一括更新する方法(IN句の使い方)

    MySQLでは、IN()句を活用することで、単一のWHERE句を使って複数の行を一度に更新できます。条件の異なる行ごとに個別のUPDATE文を実行する必要がなく、効率的なデータ操作が可能になります。ここでは、実際のサンプルコードを交えながら手順を詳しく解説します。 1. サンプルテーブルを作成する まず、デモ用のテーブル「DemoTable1420」を作成します。 mysql> create table DemoTable1420 -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Fi

  2. MySQLのSET句を使って複数のレコードを挿入する方法

    MySQLのINSERT文におけるSET句とはMySQLでは、INSERT文にSET句を組み合わせることで、「カラム名=値」の形式でデータを挿入できます。通常のINSERT ... VALUES構文と比べ、どのカラムにどの値を設定しているのかがひと目で分かるため、可読性の高いSQLを書けるのが特徴です。ここでは、実際にテーブルを作成し、SET句を使って複数のレコードを挿入する手順を解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1544 -> ( -> Id int ,