MySQLで特定の列の値ごとに行数をカウントするクエリの書き方
MySQLでは、GROUP BY句とCOUNT関数を組み合わせることで、特定の列の値ごとに行数を簡単にカウントできます。この記事では、実際にテーブルを作成し、データを挿入したうえで、各値の出現回数を集計する手順をわかりやすく解説します。
1. サンプルテーブルを作成する
まず、以下のようにテーブルを作成します。
mysql> create table DemoTable841(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value varchar(100)
);
Query OK, 0 rows affected (0.67 sec)
2. テーブルにレコードを挿入する
次に、INSERTコマンドを使って複数のレコードを追加します。ここでは「X」「Y」「Z」の3種類の値を挿入しています。
mysql> insert into DemoTable841(Value) values('X');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable841(Value) values('Y');
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable841(Value) values('Y');
Query OK, 1 row affected (1.62 sec)
mysql> insert into DemoTable841(Value) values('Z');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable841(Value) values('X');
Query OK, 1 row affected (0.81 sec)
mysql> insert into DemoTable841(Value) values('Z');
Query OK, 1 row affected (0.26 sec)
3. テーブルの内容を確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable841;
実行すると、以下のような結果が出力されます。
+----+-------+ | Id | Value | +----+-------+ | 1 | X | | 2 | Y | | 3 | Y | | 4 | Z | | 5 | X | | 6 | Z | +----+-------+ 6 rows in set (0.00 sec)
4. 特定の列ごとに行数をカウントする
ここからが本題です。Value列の値ごとに出現回数をカウントするには、GROUP BY句とCOUNT関数を使用します。さらにCONCAT関数を組み合わせると、「2 Times」のように単位付きの読みやすい形式で結果を表示できます。
mysql> select Value,Concat(COUNT(Value),' Times') from DemoTable841 group by Value;
実行すると、以下のような結果が出力されます。
+-------+-------------------------------+ | Value | Concat(COUNT(Value),' Times') | +-------+-------------------------------+ | X | 2 Times | | Y | 2 Times | | Z | 2 Times | +-------+-------------------------------+ 3 rows in set (0.04 sec)
まとめ
GROUP BY句で対象の列を指定し、COUNT関数で行数を集計することで、各値の出現回数を一覧表示できます。結果を見やすくしたい場合は、CONCAT関数で文字列を連結すると便利です。大量データの集計やレポート作成の際にも役立つ基本的なテクニックなので、ぜひマスターしておきましょう。
-
MySQLで行を列の値ごとに配列形式でグループ化する方法
MySQLで行を配列のようにグループ化したい場合は、GROUP_CONCAT() 関数と ORDER BY 句を組み合わせて使用します。この記事では、実際にテーブルを作成し、データを挿入してから、列の値ごとに行をまとめるクエリを実行する手順を具体的に解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable -> ( -> Id int, -> FirstName varchar(20) -> );Query OK, 0 rows affected (0.7
-
MySQLのLIKE句で特定の列の値(名前)を取得する方法
MySQLでテーブルから特定の列の値を取得したい場合は、LIKE句を使用します。LIKE句は部分一致検索を行うための句で、ワイルドカードと組み合わせることで、特定のパターンに一致するレコードだけを効率的に抽出できます。この記事では、実際にサンプルテーブルを作成し、LIKE句を使って特定の名前を取得する手順を順番に解説します。1. サンプルテーブルを作成するまず、名前を格納するためのテーブルを作成しましょう。以下のCREATE TABLE文を実行します。mysql> create table DemoTable1809 ( Name varchar(20) ); Q