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

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

MySQLのテーブル内で同じ値が何回出現するかをカウントし、その結果を新しい列として表示したい場合があります。このような集計処理には、COUNT(*)関数とGROUP BY句を組み合わせて使用します。

サンプルテーブルの作成

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable1942
    (
    Value int
    );
Query OK, 0 rows affected (0.00 sec)

INSERTコマンドを使って、いくつかのレコードを挿入します。

mysql> insert into DemoTable1942 values(1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(3);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(3);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(3);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1942 values(1);
Query OK, 1 row affected (0.00 sec)

SELECT文ですべてのレコードを表示して確認します。

mysql> select * from DemoTable1942;

実行すると、以下のような出力が得られます。

+-------+
| Value |
+-------+
|     1 |
|     2 |
|     3 |
|     2 |
|     3 |
|     3 |
|     1 |
+-------+
7 rows in set (0.00 sec)

出現回数をカウントするクエリ

それでは、各値の出現回数をカウントするクエリを見ていきましょう。COUNT(*)で行数を数え、GROUP BY句でValue列の値ごとにグループ化することで、それぞれの出現回数を取得できます。

mysql> select Value, count(*) from DemoTable1942
    group by Value;

このクエリを実行すると、次のような結果が出力されます。

+-------+----------+
| Value | count(*) |
+-------+----------+
|     1 |        2 |
|     2 |        2 |
|     3 |        3 |
+-------+----------+
3 rows in set (0.00 sec)

結果の解説

上記の結果から、以下のことが読み取れます。

  • 値「1」は2回出現
  • 値「2」は2回出現
  • 値「3」は3回出現

このように、COUNT(*)GROUP BYを組み合わせることで、特定の列における重複データの出現回数を簡単に集計できます。より見やすい結果にしたい場合は、AS句を使ってcount(*)に別名(例:AS 出現回数AS occurrence_count)を付与すると、新しい列として明確な名前で表示できます。

  1. MySQLで重複するIDをカウントし、結果を別の列に表示する方法

    MySQLでは、GROUP BY句とCOUNT(DISTINCT)関数を組み合わせることで、重複するIDごとにデータを集計し、その結果を別の列として表示できます。この記事では、実際のSQL例を使って手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、テーブルを作成しましょう。 mysql> create table DemoTable1453     -> (     -> CustomerId int,     -> Custom

  2. MySQLでテーブルを更新し、新しい列に名前のイニシャルを表示する方法

    MySQLでは、LEFT()関数とSUBSTRING_INDEX()関数を組み合わせることで、氏名からイニシャル(頭文字)だけを取り出すことができます。この記事では、実際にテーブルを作成し、既存のデータからイニシャルを生成して新しい列に格納する手順を解説します。 1. テーブルの作成 まず、氏名を保存する「full_name」列と、イニシャルを格納する「short_name」列を持つテーブルを作成しましょう。 mysql> create table demo13 -> ( -> full_name varchar(100), -> short_name varchar