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句を追加すれば、カウント数の多い順に並べ替えることもできるので、用途に応じて活用してください。
-
MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方
MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (
-
MySQLでテーブル内の各レコードの出現回数をカウントし、結果を新しい列として表示する方法
MySQLのテーブル内で同じ値が何回出現するかをカウントし、その結果を新しい列として表示したい場合があります。このような集計処理には、COUNT(*)関数とGROUP BY句を組み合わせて使用します。 サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable1942 ( Value int ); Query OK, 0 rows affected (0.00 sec) INSERTコマンドを使って、いくつかのレコードを挿入します。 mysql> insert into DemoTable