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

MySQLのSELECTクエリで非グループ化フィールドと共にグループ関数を使用する方法

MySQLのSELECTクエリにおいて、グループ関数(集計関数)を非グループ化フィールド(GROUP BY句に含まれないカラム)と組み合わせて使用したい場合は、必ずGROUP BY句を指定する必要があります。GROUP BY句を明示することで、どのカラムを基準にレコードをグループ化するのかをMySQLに正しく伝えることができます。

基本構文

SELECT グループ関数1, …, 非グループカラム1, … FROM テーブル名 GROUP BY カラム名;

使用例

ここでは「Student」テーブルを使った具体的な例を紹介します。まず、COUNT(*)関数とidカラムを組み合わせたクエリを実行してみましょう。

mysql> Select COUNT(*), id from Student GROUP BY id;
+----------+------+
| COUNT(*) | id   |
+----------+------+
| 1        | 1    |
| 1        | 2    |
| 1        | 15   |
| 1        | 17   |
| 1        | 20   |
+----------+------+
5 rows in set (0.00 sec)

次に、COUNT(*)関数とaddressカラムを組み合わせた例です。注目すべきは、SELECT句ではaddressを取得している一方で、GROUP BY句にはidカラムを指定している点です。

mysql> Select COUNT(*), address from Student GROUP BY id;
+----------+---------+
| COUNT(*) | address |
+----------+---------+
| 1        | Delhi   |
| 1        | Mumbai  |
| 1        | Delhi   |
| 1        | Shimla  |
| 1        | Jaipur  |
+----------+---------+
5 rows in set (0.00 sec)

ポイント

GROUP BY句の後に指定するカラムは、SELECT文で指定した非グループ化フィールドと異なっていても問題ありません。上記の2番目の例のように、SELECT句でaddressカラムを取得しながら、GROUP BY句ではidカラムを基準にグループ化することが可能です。ただし、この場合の表示結果はグループ化の基準となるカラムの処理順序に依存するため、意図した結果を得るためにはGROUP BY句とSELECT句で同じカラムを指定することが推奨されます。

  1. JavaでMySQLのSELECTクエリにPreparedStatement(プリペアドステートメント)を使う方法

    executeQuery()メソッドの基本的な使い方JavaからMySQLに対してSELECTクエリを実行する場合は、PreparedStatementオブジェクトのexecuteQuery()メソッドを使用します。基本構文は以下の通りです。yourPreparedStatementObject = yourConnectionObject.prepareStatement(yourQueryName);yourResultSetObject = yourPreparedStatementObject.executeQuery();それでは、実際にサンプルデータベース「sample」を使って手

  2. MySQLクエリでCASE条件を使ってカウントする方法

    MySQLでは、CASE WHENを活用し、COUNT()関数の中にCASE条件を設定することで、特定の条件に一致するレコードだけを数えることができます。この仕組みが成り立つのは、COUNT()関数がNULL値を無視するためです。条件に合わない場合にNULLを返すことで、そのレコードはカウント対象から除外されます。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。 ); Query OK, 0 rows affected (0.61 sec)2. レコードの挿入続いて、insertコマンドを使ってテーブルにデータを登録します。mysql> insert into D