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

MySQLで同じ文字列の出現回数を数える方法|COUNT関数とGROUP BYの使い方

MySQLでテーブル内に同じ文字列が何回出現しているかを調べたい場合には、COUNT()関数を使用します。本記事では、サンプルテーブルを作成し、各名前ごとの出現回数を集計する手順を、実際のコード例とともにわかりやすく解説します。

1. サンプルテーブルの作成

まず、学生の名前を格納するためのテーブル「DemoTable」を作成します。

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

2. レコードの挿入

次に、INSERTコマンドを使ってテーブルにデータを登録していきます。ここでは意図的に同じ名前(Larry、Davidなど)を複数回挿入しています。

mysql> insert into DemoTable values('Larry');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Larry');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Larry');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('David');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values('Larry');
Query OK, 1 row affected (0.14 sec)

3. 登録済みレコードの確認

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select * from DemoTable;

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

+------------------+
| StudentFirstName |
+------------------+
| Larry            |
| John             |
| Larry            |
| David            |
| Bob              |
| Larry            |
| David            |
| Larry            |
+------------------+
8 rows in set (0.00 sec)

4. 同じ文字列の出現回数をカウントするクエリ

それでは本題です。COUNT()関数とGROUP BY句を組み合わせることで、各文字列ごとの出現回数を集計できます。さらにCONCAT()関数を使えば、カウント結果に任意の文字列(ここでは「 times」)を連結して表示することも可能です。

mysql> select StudentFirstName,concat(count(StudentFirstName),' times') from DemoTable
group by StudentFirstName;

このクエリのポイントは以下の2点です。

  • GROUP BY句:StudentFirstNameの値ごとに行をグループ化します。
  • COUNT()関数:グループ化された各行の件数(出現回数)を数えます。

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

+------------------+------------------------------------------+
| StudentFirstName | concat(count(StudentFirstName),' times') |
+------------------+------------------------------------------+
| Larry            | 4 times                                  |
| John             | 1 times                                  |
| David            | 2 times                                  |
| Bob              | 1 times                                  |
+------------------+------------------------------------------+
4 rows in set (0.00 sec)

まとめ

この結果から、「Larry」は4回、「David」は2回、「John」と「Bob」はそれぞれ1回出現していることが一目でわかります。なお、単純に出現回数だけを数値として扱いたい場合は、CONCAT()を使わずにselect StudentFirstName, count(StudentFirstName) from DemoTable group by StudentFirstName;とすればOKです。重複データの分析や集計処理において、COUNT()+GROUP BYの組み合わせは非常に頻繁に使われる基本テクニックなので、ぜひ覚えておきましょう。

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

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

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

    MySQLである列に含まれる同じ値がそれぞれ何回出現しているかを調べたい場合、COUNT(*)とGROUP BY句を組み合わせることで簡単に集計できます。この記事では、実際のサンプルを使いながら手順を解説します。 1. サンプルテーブルを作成する まずは動作確認用のテーブルを作成しましょう。ここでは「Id」と「Name」の2つのカラムを持つテーブルを定義します。 mysql> create table DemoTable1818 ( Id int, Name varchar(20) ); Query OK, 0 rows affected (0.00 s