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

MySQLで重複を除いた個別の値の件数をカウントする方法

MySQLで個別の値の件数をカウントする方法

MySQLでは、COUNT(DISTINCT カラム名) を使うことで、重複を除外した上で値の種類数を数えることができます。ここでは、サンプルテーブルを作成し、実際に個別の値の件数を取得するまでの手順を具体的に解説します。

1. テーブルの作成

まず、以下のコマンドでテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> Name varchar(100),
    -> Code varchar(100)
    -> );
Query OK, 0 rows affected (0.54 sec)

2. レコードの挿入

次に、INSERT文を使ってテーブルにデータを追加していきます。

mysql> insert into DemoTable values('Chris','0001');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable values('Robert','0002');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable values('Robert','0003');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('Chris','0001');
Query OK, 1 row affected (0.12 sec)

このデータでは、「Chris」には同じ「0001」というCodeが2回登録されており、「Robert」には「0002」「0003」の2種類が登録されている状態です。

3. 登録データの確認

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

mysql> select *from DemoTable;

出力結果

+--------+------+
| Name   | Code |
+--------+------+
| Chris  | 0001 |
| Robert | 0002 |
| Robert | 0003 |
| Chris  | 0001 |
+--------+------+
4 rows in set (0.00 sec)

4. 個別の値の件数をカウントするクエリ

重複を除外した値の件数を数えるには、GROUP BY句と組み合わせて COUNT(DISTINCT ...) を使用します。以下がそのクエリです。

mysql> select Name,count(distinct Code) from DemoTable group by Name;

出力結果

+--------+----------------------+
| Name   | count(distinct Code) |
+--------+----------------------+
| Chris  |             1        |
| Robert |             2        |
+--------+----------------------+
2 rows in set (0.06 sec)

結果の解説

この実行結果からわかるように、「Chris」は同一のCode(0001)が重複して登録されているため1件、「Robert」は異なるCode(0002と0003)を持つため2件としてカウントされています。通常のCOUNT()では重複も含めて数えられますが、DISTINCTキーワードを指定することで、一意な値だけを対象に集計できる点がポイントです。

COUNT(DISTINCT ...) は、ユーザーごとの購入商品種別数の集計や、アクセスログからユニークなページ閲覧数を算出するなど、実務のさまざまなシーンで活用できる便利な構文なので、ぜひ使いこなしておきましょう。

  1. JavaでMySQLテーブルのカラム数を取得・カウントする方法

    MySQLテーブルのカラム(列)数をJavaで取得するには、ResultSetMetaDataインターフェースを使用します。ResultSetMetaDataを活用すれば、カラムの総数だけでなく、各カラムの名前やデータ型といった詳細情報も簡単に取得できます。前提:サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。以下のSQLでは、3つのカラムを持つ「DemoTable」を作成しています。mysql> create table DemoTable     -> (     -> St

  2. Excelで列の一意の値・重複のない値の数をカウントする方法

    Excelのシートで、列内のリストから「一意の値」や「重複のない値」の数を抽出することは、さまざまな場面で役立ちます。例えば、ある大会で優勝した選手の人数を集計したい場合や、顧客ごとに販売された商品の種類数を把握したい場合などです。このような集計作業において、一意の値・重複のない値のカウントは非常に便利なテクニックとなります。 まず用語を整理しておきましょう。「一意の値(ユニークな値)」とは、リスト内に1回だけ出現する値のことです。一方、「重複のない値(ディスティンクトな値)」とは、重複を除いた値の種類数のことです。同じ値が何回出現しても1つとして数える点がポイントです。 Excelで列内の一