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

MySQLで列ごとの値の出現回数をカウントする方法(GROUP BYの使い方)

MySQLで列ごとの値の出現回数をカウントするには?

MySQLである列に含まれる各値が何回出現するかを集計したい場合は、GROUP BY句COUNT()関数を組み合わせて使用します。この記事では、サンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。

1. サンプルテーブルを作成する

まず、生徒の名前を格納するテーブルを作成しましょう。

mysql> create table DemoTable
    (
    StudentFirstName varchar(20)
    );
Query OK, 0 rows affected (0.74 sec)

2. レコードを挿入する

続いて、INSERTコマンドを使ってテーブルにレコードを追加していきます。意図的に同じ名前を複数回登録している点に注目してください。

mysql> insert into DemoTable values('John');
Query OK, 1 row affected (1.34 sec)
mysql> insert into DemoTable values('Carol');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.25 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.55 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('Carol');
Query OK, 1 row affected (0.37 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.14 sec)

3. 登録されたレコードを確認する

SELECT文ですべてのレコードを表示して、データの中身を確認してみましょう。

mysql> select * from DemoTable;

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

+------------------+
| StudentFirstName |
+------------------+
| John             |
| Carol            |
| John             |
| John             |
| Bob              |
| David            |
| Bob              |
| Carol            |
| Robert           |
+------------------+
9 rows in set (0.00 sec)

4. 値ごとの件数をカウントするクエリ

それでは本題です。名前ごとの出現回数を集計するには、対象の列でGROUP BYを行い、COUNT(*)で件数を取得します。

mysql> select StudentFirstName,count(*) from DemoTable
group by StudentFirstName;

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

+------------------+----------+
| StudentFirstName | count(*) |
+------------------+----------+
| John             | 3        |
| Carol            | 2        |
| Bob              | 2        |
| David            | 1        |
| Robert           | 1        |
+------------------+----------+
5 rows in set (0.00 sec)

まとめ

このように、GROUP BY句とCOUNT()関数を組み合わせることで、列内の各値が何回登場するかを簡単に集計できます。ログ解析やカテゴリ別の統計など、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。

なお、「重複を除いた値の種類数」だけを知りたい場合は、SELECT COUNT(DISTINCT StudentFirstName) FROM DemoTable;のようにDISTINCTを併用することも可能です。

  1. MySQLで個別の値の出現回数をカウントし、結果を新しい列として表示する方法

    MySQLでは、GROUP BY句とCOUNT()関数を組み合わせることで、各値が何回出現したかを簡単に集計できます。この記事では、実際にテーブルを作成し、重複する値の出現回数をカウントして結果を表示する手順を解説します。 1. サンプルテーブルの作成 まず、集計対象となるテーブルを作成しましょう。 mysql> create table DemoTable ( Value int ); Query OK, 0 rows affected (0.57 sec) 2. テストデータの挿入 INSERTコマンドを使って、いくつかのレコードを挿入します。意図的に同じ値を複数回登録し

  2. MySQLで列(カラム)を分割する方法!SUBSTRING_INDEX関数の使い方を徹底解説

    MySQLで列を分割するには?SUBSTRING_INDEX関数の基本MySQLで1つの列に格納された文字列を区切り文字で分割したい場合、SUBSTRING_INDEX()関数を使用します。この記事では、アンダースコア(_)で区切られた氏名データを分割する具体例を通じて、その使い方をわかりやすく解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Name varchar(40) -> );Query OK, 0 rows affected (1.