MySQLの列に特定の単語(値)が出現する回数を取得する方法【COUNT()関数】
はじめに
MySQLである特定の単語や値が、テーブルの列に何回出現するかを調べたい場合があります。たとえば「同じ名前の従業員が何人登録されているか」を確認したいときなどです。
このような場合には、COUNT()関数を使用します。本記事では、サンプルテーブルを作成し、実際に特定の値の出現回数を取得する手順を解説します。
1. サンプルテーブルの作成
まず、以下のようにテーブルを作成します。
mysql> create table DemoTable
-> (
-> EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> EmployeeName varchar(100)
-> );
Query OK, 0 rows affected (0.62 sec)
このテーブルは、自動採番される EmployeeId を主キーとし、従業員名を格納する EmployeeName 列を持っています。
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable(EmployeeName) values('John');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(EmployeeName) values('Carol');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(EmployeeName) values('David');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(EmployeeName) values('Carol');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(EmployeeName) values('Carol');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable(EmployeeName) values('Bob');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(EmployeeName) values('Sam');
Query OK, 1 row affected (0.12 sec)ここでは、「Carol」という名前が意図的に3回登録されている点に注目してください。
3. テーブルの内容を確認する
SELECT文ですべてのレコードを表示して確認しましょう。
mysql> select *from DemoTable;
上記クエリを実行すると、次のような結果が得られます。
+------------+--------------+
| EmployeeId | EmployeeName |
+------------+--------------+
| 1 | John |
| 2 | Carol |
| 3 | David |
| 4 | Carol |
| 5 | Carol |
| 6 | Bob |
| 7 | Sam |
+------------+--------------+
7 rows in set (0.00 sec)
特定の単語の出現回数を取得するクエリ
それが本題となる、特定の単語が列に何回出現するかを取得するクエリです。ここでは例として、従業員名「Carol」の出現回数を調べます。
mysql> select EmployeeName,count(EmployeeId) as Occurrence from DemoTable where
EmployeeName='Carol';
ポイント:
WHERE EmployeeName='Carol'により、対象の行だけに絞り込みます。count(EmployeeId)で該当するレコードの件数をカウントし、別名「Occurrence」として表示しています。
実行結果
このクエリを実行すると、以下の出力が得られます。
+--------------+------------+
| EmployeeName | Occurrence |
+--------------+------------+
| Carol | 3 |
+--------------+------------+
1 row in set (0.05 sec)
結果から、「Carol」はテーブル内に3回出現していることが確認できました。
補足:すべての値ごとの出現回数を一度に調べるには
WHERE句で絞り込む代わりに、GROUP BY句を使うと、すべての名前ごとの出現回数を一括で取得できます。
mysql> select EmployeeName, count(*) as Occurrence
-> from DemoTable
-> group by EmployeeName;
実行結果は次のようになります。
+--------------+------------+
| EmployeeName | Occurrence |
+--------------+------------+
| John | 1 |
| Carol | 3 |
| David | 1 |
| Bob | 1 |
| Sam | 1 |
+--------------+------------+
集計対象が複数ある場合はGROUP BYの方が効率的です。状況に応じて使い分けるとよいでしょう。
まとめ
MySQLで特定の単語が列に出現する回数を取得するには、COUNT()関数とWHERE句を組み合わせます。また、複数の値をまとめて集計したい場合にはGROUP BY句を利用することで、より柔軟な集計が可能になります。
-
MySQLで特定の文字で始まる英数字文字列の列から最大値を取得する方法
概要 MySQLで、特定の文字(例:「IT」)で始まる英数字の文字列が格納された列から最大値を取得したいケースはよくあります。このような場合には、MAX()関数とCAST()関数を組み合わせて使用します。さらに、目的のレコードだけを絞り込むためにRLIKE演算子を活用します。 以下、テーブル作成から順を追って具体的な手順を解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。 mysql> create table DemoTable1381 -> ( -> DepartmentId varchar(40) -> );
-
MySQLでREGEXP(正規表現)を使って特定の単語を検索する方法
MySQLでは、REGEXP演算子(正規表現)を使用することで、文字列の中から特定の単語やパターンを柔軟に検索できます。LIKE句よりも複雑な条件指定が可能なため、部分一致や文中の任意の位置にある単語を正確に探したい場合に非常に便利です。 サンプルテーブルの作成 まず、検索対象となるテーブルを作成しましょう。 mysql> create table DemoTable -> ( -> Title varchar(255) -> ); Query OK, 0 rows affected (1.82 sec) レコードの挿入 次に、INSERTコマン