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句に複数の列を指定することで、列同士の組み合わせごとにグループ化が行われ、より詳細な分析結果を得ることができるのです。
-
MySQLで単一のWHERE句を使って複数行を一括更新する方法(IN句の使い方)
MySQLでは、IN()句を活用することで、単一のWHERE句を使って複数の行を一度に更新できます。条件の異なる行ごとに個別のUPDATE文を実行する必要がなく、効率的なデータ操作が可能になります。ここでは、実際のサンプルコードを交えながら手順を詳しく解説します。 1. サンプルテーブルを作成する まず、デモ用のテーブル「DemoTable1420」を作成します。 mysql> create table DemoTable1420 -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Fi
-
MySQLのSET句を使って複数のレコードを挿入する方法
MySQLのINSERT文におけるSET句とはMySQLでは、INSERT文にSET句を組み合わせることで、「カラム名=値」の形式でデータを挿入できます。通常のINSERT ... VALUES構文と比べ、どのカラムにどの値を設定しているのかがひと目で分かるため、可読性の高いSQLを書けるのが特徴です。ここでは、実際にテーブルを作成し、SET句を使って複数のレコードを挿入する手順を解説します。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1544 -> ( -> Id int ,