MySQLで個別の値の出現回数をカウントし、結果を新しい列として表示する方法
MySQLでは、GROUP BY句とCOUNT()関数を組み合わせることで、各値が何回出現したかを簡単に集計できます。この記事では、実際にテーブルを作成し、重複する値の出現回数をカウントして結果を表示する手順を解説します。
1. サンプルテーブルの作成
まず、集計対象となるテーブルを作成しましょう。
mysql> create table DemoTable
(
Value int
);
Query OK, 0 rows affected (0.57 sec)
2. テストデータの挿入
INSERTコマンドを使って、いくつかのレコードを挿入します。意図的に同じ値を複数回登録している点に注目してください。
mysql> insert into DemoTable values(80); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(90); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values(90); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(80); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(100); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTable values(90); Query OK, 1 row affected (0.12 sec)
3. 登録されたデータの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DemoTable;
実行すると、次のような出力が得られます。
+-------+ | Value | +-------+ | 80 | | 90 | | 90 | | 80 | | 100 | | 90 | +-------+ 6 rows in set (0.00 sec)
「80」が2回、「90」が3回、「100」が1回登録されていることが確認できます。
4. 値ごとの出現回数をカウントするクエリ
ここからが本題です。GROUP BY句で値ごとにグループ化し、COUNT(*)でそれぞれの件数を集計します。
mysql> select Value,count(*) from DemoTable group by Value;
実行結果は以下のとおりです。
+-------+----------+ | Value | count(*) | +-------+----------+ | 80 | 2 | | 90 | 3 | | 100 | 1 | +-------+----------+ 3 rows in set (0.00 sec)
5. 集計結果の列名を見やすくする(AS句の活用)
デフォルトでは列名が「count(*)」と表示されますが、ASキーワードを使えば、結果をより分かりやすい新しい列名で表示できます。
mysql> select Value, count(*) AS 出現回数 from DemoTable group by Value;
これにより、「Value」と「出現回数」という2つの列を持つ集計結果が得られ、レポートやアプリケーションでの利用時に非常に読みやすくなります。
まとめ
値の出現回数を集計する基本は、以下の構文です。
SELECT 列名, COUNT(*) FROM テーブル名 GROUP BY 列名;
GROUP BYとCOUNT()の組み合わせは、ログ解析やカテゴリ別の件数集計など、実務でも頻繁に使われるテクニックです。ぜひマスターしておきましょう。
-
MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方
MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (
-
MySQLでテーブル内の各レコードの出現回数をカウントし、結果を新しい列として表示する方法
MySQLのテーブル内で同じ値が何回出現するかをカウントし、その結果を新しい列として表示したい場合があります。このような集計処理には、COUNT(*)関数とGROUP BY句を組み合わせて使用します。 サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable1942 ( Value int ); Query OK, 0 rows affected (0.00 sec) INSERTコマンドを使って、いくつかのレコードを挿入します。 mysql> insert into DemoTable