単一の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回出現していることが一目で確認できました。
-
MySQLで特定のカラム名を持つテーブルを検索する方法
MySQLで特定のカラム名(列名)を持つテーブルを探したい場合は、システムビューである information_schema.columns を利用します。このビューにはデータベース内のすべてのテーブルとカラムの情報が格納されているため、条件を指定して検索するだけで、目的のカラムを持つテーブルを簡単に特定できます。 基本構文 カラム名からテーブル名を検索する際の基本的な構文は以下の通りです。 select distinct table_name from information_schema.columns where column_name like %yourSearchValue% a
-
MySQLで特定の値を持つ列の数をカウントする方法【SUM関数の活用】
はじめにMySQLでは、SUM関数と加算演算子(+)・論理演算子(AND)を組み合わせることで、テーブル内の複数の列に含まれる特定の値(たとえば「1」)の合計個数や、すべての列がその値を持つ行数を簡単に集計できます。本記事では、サンプルテーブルを作成しながら、具体的なSQLクエリの書き方と実行結果をわかりやすく解説します。基本構文特定の値を持つ列の数をカウントする場合、以下のような構文を使用します。selectsum(yourColumnName1 + yourColumnName2 + yourColumnName3 ... N) as `anyAliasName1`,sum(yourCol