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

単一のMySQLクエリで列内の特定の値の出現回数をカウントする方法

はじめに

MySQLでテーブルの特定の列に含まれる値の出現回数を調べたい場合、GROUP BY句IN()を組み合わせることで、単一のクエリで簡単に実現できます。この記事では、実際にサンプルテーブルを作成しながら、その手順をわかりやすく解説します。

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

まず、CREATE TABLE文を使用してテーブルを作成します。

mysql> create table DemoTable
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(100)
    -> );
Query OK, 0 rows affected (0.87 sec)

このテーブルには、自動採番される「Id」と名前を格納する「Name」の2つの列があります。

2. レコードの挿入

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

mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.23 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.23 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable(Name) values('Carol');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable(Name) values('Sam');
Query OK, 1 row affected (0.19 sec)

3. テーブルの内容を確認

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

mysql> select *from DemoTable;

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

+----+-------+
| Id | Name  |
+----+-------+
|  1 | John  |
|  2 | Chris |
|  3 | David |
|  4 | Chris |
|  5 | Chris |
|  6 | John  |
|  7 | Carol |
|  8 | Sam   |
+----+-------+
8 rows in set (0.00 sec)

4. 特定の値の出現回数をカウントする

それでは本題です。WHERE句でIN()を使って対象の値を絞り込み、GROUP BY句とCOUNT(*)を組み合わせることで、各値の出現回数を一度のクエリで取得できます。

mysql> select Name,count(*) AS Occurrences from DemoTable
   -> where Name in('John','Chris') group by Name;

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

+-------+-------------+
| Name  | Occurrences |
+-------+-------------+
| John  |           2 |
| Chris |           3 |
+-------+-------------+
2 rows in set (0.00 sec)

まとめ

このように、GROUP BY句で対象の列ごとにグループ化し、COUNT(*)で行数を数え、IN()でカウントしたい値だけを抽出することで、単一のMySQLクエリで特定の値の出現回数を効率的に集計できます。上記の例では、「John」が2回、「Chris」が3回出現していることが一目で確認できました。

  1. MySQLで特定のカラム名を持つテーブルを検索する方法

    MySQLで特定のカラム名(列名)を持つテーブルを探したい場合は、システムビューである information_schema.columns を利用します。このビューにはデータベース内のすべてのテーブルとカラムの情報が格納されているため、条件を指定して検索するだけで、目的のカラムを持つテーブルを簡単に特定できます。 基本構文 カラム名からテーブル名を検索する際の基本的な構文は以下の通りです。 select distinct table_name from information_schema.columns where column_name like %yourSearchValue% a

  2. MySQLで特定の値を持つ列の数をカウントする方法【SUM関数の活用】

    はじめにMySQLでは、SUM関数と加算演算子(+)・論理演算子(AND)を組み合わせることで、テーブル内の複数の列に含まれる特定の値(たとえば「1」)の合計個数や、すべての列がその値を持つ行数を簡単に集計できます。本記事では、サンプルテーブルを作成しながら、具体的なSQLクエリの書き方と実行結果をわかりやすく解説します。基本構文特定の値を持つ列の数をカウントする場合、以下のような構文を使用します。selectsum(yourColumnName1 + yourColumnName2 + yourColumnName3 ... N) as `anyAliasName1`,sum(yourCol