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

MySQLでテーブルの列に含まれる一意な値の数をカウントする方法

MySQLでは、COUNT()関数の引数として列名とともにDISTINCTキーワードを使用することで、特定の列に含まれる一意な値(重複を除いた値)の数を簡単にカウントできます。

基本構文

構文は以下の通りです。

SELECT COUNT(DISTINCT Col_name) FROM table_name;

このクエリを実行すると、指定した列から重複する値が取り除かれた状態で、残った値の総数が返されます。データ分析やレポート作成の際に、ユニークな顧客数やカテゴリ数を把握したい場合などに非常に便利です。

実行例

ここでは、次のような「tender」というテーブルを例に説明します。

mysql> Select * from tender;
+----------+--------------+--------------+-------+
| clientid | client_Fname | Client_Lname | value |
+----------+--------------+--------------+-------+
|   100    | Mohan        | Kumar        | 60000 |
|   101    | Sohan        | Singh        | 50000 |
|   101    | Somil        | Rattan       | 55000 |
|   103    | Gaurav       | Kumar        | 75000 |
|   103    | Rahul        | Singh        | 63000 |
+----------+--------------+--------------+-------+
5 rows in set (0.00 sec)

このテーブルには5件のレコードが登録されていますが、clientid列には同じ値が重複して存在していることがわかります。

clientid列の一意な値をカウントする

「clientid」列に含まれる一意な値の総数をカウントしたい場合は、以下のクエリを使用します。

mysql> Select COUNT(DISTINCT Clientid) from tender;
+--------------------------+
| COUNT(DISTINCT Clientid) |
+--------------------------+
|                        3 |
+--------------------------+
1 row in set (0.00 sec)

結果は「3」となり、5件のレコードの中に実際には3つの異なるクライアントID(100、101、103)しか存在しないことが確認できます。

Client_Lname列の一意な値をカウントする

同様に、「Client_Lname」(姓)列の一意な値の総数をカウントしたい場合は、以下のクエリを実行します。

mysql> Select COUNT(DISTINCT Client_Lname) from tender;
+------------------------------+
| COUNT(DISTINCT Client_Lname) |
+------------------------------+
|                            3 |
+------------------------------+
1 row in set (0.00 sec)

こちらも結果は「3」です。つまり、姓としては「Kumar」「Singh」「Rattan」の3種類が存在することになります。

まとめ

COUNT(DISTINCT 列名)を使うことで、重複する値を除外した上で列内のユニークな値の数を取得できます。単純なCOUNT(列名)との違いを理解しておくと、データの集計作業がより正確かつ効率的になります。

  1. MySQLでテーブル列の重複値の数をカウントするクエリの書き方

    MySQLでは、GROUP BY句とHAVING句を組み合わせることで、テーブルの特定の列に含まれる重複値の数を簡単にカウントできます。この記事では、実際にサンプルテーブルを作成し、重複しているデータの件数を取得する手順を解説します。 1. サンプルテーブルの作成 まず、以下のCREATE TABLE文を使ってテーブルを作成します。 mysql> create table DemoTable( Data int ); Query OK, 0 rows affected (0.98 sec) 2. テーブルへのレコード挿入 次に、INSERT文を使用してサンプルレコードを挿入

  2. MySQLでCASE WHENを使って列内の2つの値を交換・更新する方法

    MySQLである列内の2つの値を入れ替え(スワップ)したい場合、CASE WHEN文を使えば一度のUPDATE文で簡単に実現できます。ここでは、サンプルテーブルを作成しながら、実際に値を交換する手順を解説します。 1. サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1382 -> ( -> StudentName varchar(20) -> ); Query OK, 0 rows affected (0.57 sec) 2. レコードの挿入 INSERTコマンドでいくつかのレ