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

MySQLで列ごとの同じ値の出現回数をカウントする方法(GROUP BYとCOUNT(*)の使い方)

MySQLである列に含まれる同じ値がそれぞれ何回出現しているかを調べたい場合、COUNT(*)GROUP BY句を組み合わせることで簡単に集計できます。この記事では、実際のサンプルを使いながら手順を解説します。

1. サンプルテーブルを作成する

まずは動作確認用のテーブルを作成しましょう。ここでは「Id」と「Name」の2つのカラムを持つテーブルを定義します。

mysql> create table DemoTable1818
    (
    Id int,
    Name varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2. テストデータを挿入する

次に、INSERT文を使ってレコードを挿入します。意図的に同じIdの値を複数回登録しています。

mysql> insert into DemoTable1818 values(10,'Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1818 values(11,'Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1818 values(11,'Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1818 values(12,'Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1818 values(10,'Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1818 values(10,'Chris');
Query OK, 1 row affected (0.00 sec)

3. 登録されたデータを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1818;

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

+------+-------+
| Id   |  Name |
+------+-------+
|   10 | Chris |
|   11 | Chris |
|   11 | Chris |
|   12 | Chris |
|   10 | Chris |
|   10 | Chris |
+------+-------+
6 rows in set (0.00 sec)

4. GROUP BYで同じ値の出現回数を集計する

それが本題のクエリです。GROUP BY句でIdごとに行をグループ化し、COUNT(*)でそれぞれのグループに含まれる行数を数えます。結果には分かりやすいように「TotalPerId」という別名(エイリアス)を付けています。

mysql> select Id,count(*) as TotalPerId from DemoTable1818 group by Id;

実行すると、以下のようにIdごとの出現回数が一覧で取得できます。

+------+------------+
| Id   | TotalPerId |
+------+------------+
|   10 |          3 |
|   11 |          2 |
|   12 |          1 |
+------+------------+
3 rows in set (0.00 sec)

まとめ

GROUP BYCOUNT(*)を組み合わせることで、列内の重複した値を種類ごとに簡単にカウントできます。このテクニックは、ログ解析やカテゴリ別の件数集計など、さまざまな場面で活用できるので、ぜひ覚えておきましょう。

  1. MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方

    MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829      (      Name varchar(

  2. MySQLで列の最大値を取得する方法をわかりやすく解説

    MySQLで特定の列の最大値を取得するには、MAX(columnName)関数を使用します。本記事では、その基本的な使い方に加えて、データベースやテーブルの設計に関する前提知識もあわせて解説します。MySQLのデータベースとテーブルの基礎MySQLをインストールする前に、まず使用するバージョンと配布形式(バイナリファイルか、ソースファイルからビルドするか)を決定することが重要です。新しく作成したばかりのデータベースには、当然ながらテーブルはまだ存在しません。データベース設計において最も重要なのは、以下の要素を決めることです。データベース全体の構造必要となるテーブルの一覧各テーブルに含まれる列(