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

MySQLで列内の特定の値の出現回数(カウント)を取得する方法

MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の列に含まれる指定した値の出現回数を簡単に取得できます。この記事では、サンプルテーブルを作成し、実際にクエリを実行しながら手順を解説します。

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

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
    (
       Id int,
       Name varchar(100)
    );
Query OK, 0 rows affected (1.40 sec)

Id(整数型)とName(可変長文字列型)の2つの列を持つテーブルが作成されました。

2. レコードの挿入

次に、INSERTコマンドを使ってテーブルに複数のレコードを挿入します。意図的に同じ名前(Chris)を複数回登録している点に注目してください。

mysql> insert into DemoTable values(100,'John');
Query OK, 1 row affected (0.44 sec)
mysql> insert into DemoTable values(101,'Chris');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(102,'Chris');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(103,'Chris');
Query OK, 1 row affected (1.05 sec)
mysql> insert into DemoTable values(104,'David');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(105,'Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(106,'Carol');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable values(107,'Bob');
Query OK, 1 row affected (0.18 sec)

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

SELECT文を実行して、テーブルに登録されたすべてのレコードを表示します。

mysql> select *from DemoTable;

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

+------+-------+
| Id   | Name  |
+------+-------+
| 100  | John  |
| 101  | Chris |
| 102  | Chris |
| 103  | Chris |
| 104  | David |
| 105  | Chris |
| 106  | Carol |
| 107  | Bob   |
+------+-------+
8 rows in set (0.00 sec)

合計8件のレコードが登録されており、そのうち「Chris」は4件含まれていることが確認できます。

4. 特定の値のカウントを取得するクエリ

列内の特定の値(ここでは「Chris」)の出現回数を取得するには、以下のようにCOUNT(*)WHERE句を組み合わせます。

mysql> select count(*) from DemoTable where Name='Chris';

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

+----------+
| count(*) |
+----------+
| 4        |
+----------+
1 row in set (0.00 sec)

このように、「Chris」という値がName列に4件存在することが一目でわかります。

ポイントまとめ

COUNT(*)は条件に一致する行数を返す集計関数です。WHERE句で絞り込み条件を指定することで、任意の値の出現回数を取得できます。なお、すべての名前ごとの出現回数を一度に知りたい場合は、SELECT Name, COUNT(*) FROM DemoTable GROUP BY Name;のようにGROUP BYを使うと便利です。

  1. MySQLでTIME型カラムの平均値を取得する方法をわかりやすく解説

    MySQLでTIME型カラムの平均値を求める基本構文MySQLでTIME型(時間型)カラムの平均値を取得したい場合、AVG()関数をそのまま使うだけでは正しい結果が得られません。そこで活躍するのが、TIME_TO_SEC()とSEC_TO_TIME()という2つの関数です。基本的な構文は以下の通りです。実行すると、結果が時間形式(HH:MM:SS)で返されます。SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(yourColumnName))) AS anyVariableName FROM yourTableName;この構文のポイントは、まずTIME_TO_SEC()で

  2. JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説

    ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ