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

MySQLで名前ごとにグループ化し、カウント結果を新しい列に表示する方法

MySQLでは、GROUP BY句とCOUNT()関数を組み合わせることで、同じ値を持つレコードをまとめて集計できます。この記事では、名前の列をグループ化し、各名前の出現回数を新しい列として表示するクエリの書き方を、具体的な手順とともに解説します。

サンプルテーブルの作成

まず、デモ用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    Name varchar(30)
);
Query OK, 0 rows affected (0.63 sec)

レコードの挿入

次に、INSERTコマンドを使って複数のレコードを挿入します。ここでは、意図的に重複する名前を含めています。

mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.12 sec)

テーブルの内容を確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+--------+
| Name   |
+--------+
| Chris  |
| Robert |
| Mike   |
| Robert |
| Mike   |
| David  |
+--------+
6 rows in set (0.00 sec)

名前ごとにグループ化してカウントを表示する

以下のクエリを実行すると、名前ごとにレコードがグループ化され、各名前の出現回数が「NumberOfRowsPerName」という別名の列に表示されます。

mysql> select Name,count(Name) as NumberOfRowsPerName from DemoTable group by Name;

実行結果は以下の通りです。

+--------+---------------------+
| Name   | NumberOfRowsPerName |
+--------+---------------------+
| Chris  |                   1 |
| Robert |                   2 |
| Mike   |                   2 |
| David  |                   1 |
+--------+---------------------+
4 rows in set (0.00 sec)

クエリのポイント

  • GROUP BY Name:同じ名前の行を1つのグループにまとめます。
  • count(Name):各グループ内の行数、つまりその名前が出現した回数を数えます。
  • as NumberOfRowsPerName:COUNT()の結果列に読みやすい別名を付けています。

このようにGROUP BYとCOUNT()を組み合わせれば、重複データの集計や出現回数の把握が簡単に行えます。さらにORDER BY句を追加すれば、カウント数の多い順に並べ替えることもできるので、用途に応じて活用してください。

  1. MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方

    MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (

  2. MySQLでテーブル内の各レコードの出現回数をカウントし、結果を新しい列として表示する方法

    MySQLのテーブル内で同じ値が何回出現するかをカウントし、その結果を新しい列として表示したい場合があります。このような集計処理には、COUNT(*)関数とGROUP BY句を組み合わせて使用します。 サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable1942 ( Value int ); Query OK, 0 rows affected (0.00 sec) INSERTコマンドを使って、いくつかのレコードを挿入します。 mysql> insert into DemoTable