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