MySQLで列内の重複しないレコード数を取得する方法
MySQLで列内の重複しない(ユニークな)レコードの数を取得するには、COUNT()関数とDISTINCTキーワードを組み合わせて使用します。
基本構文
以下が基本となる構文です。
SELECT COUNT(DISTINCT yourColumnName) FROM yourTableName;
実際にサンプルテーブルを作成して、動作を確認してみましょう。
テーブルの作成
まず、テーブルを作成します。
mysql> CREATE TABLE DemoTable -> ( -> Name VARCHAR(20), -> Score INT -> ); Query OK, 0 rows affected (0.67 sec)
データの挿入
次に、INSERT文を使ってレコードを挿入します。意図的に重複するデータを含めています。
mysql> INSERT INTO DemoTable VALUES('John', 56);
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable VALUES('Sam', 89);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('John', 56);
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('Carol', 60);
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('Sam', 89);
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Carol', 60);
Query OK, 1 row affected (0.20 sec)テーブルの内容を確認
SELECT文ですべてのレコードを表示します。
mysql> SELECT * FROM DemoTable;
実行結果は以下の通りです。
出力結果
+-------+-------+ | Name | Score | +-------+-------+ | John | 56 | | Sam | 89 | | John | 56 | | Carol | 60 | | Sam | 89 | | Carol | 60 | +-------+-------+ 6 rows in set (0.00 sec)
合計6件のレコードが登録されていますが、Score列の値は「56」「89」「60」の3種類しかありません。
重複しないレコード数を取得するクエリ
それでは、Score列の重複しない値の件数を取得するクエリを実行します。
mysql> SELECT COUNT(DISTINCT Score) FROM DemoTable;
出力結果
+-----------------------+ | COUNT(DISTINCT Score) | +-----------------------+ | 3 | +-----------------------+ 1 row in set (0.00 sec)
このように、COUNT(DISTINCT 列名)を使用することで、重複する値を除外したユニークなレコード数を簡単に取得できます。6件のレコードから重複を除いた結果、3件という数値が返されました。
まとめ
データ分析やレポート作成の際に、重複データを排除した件数を知りたいケースは多くあります。そのような場合は、COUNT(DISTINCT 列名)を使えば1つのクエリで簡単に実現できます。NULL値は自動的にカウントから除外される点も覚えておくと便利です。
-
MySQLの1つのクエリで特定のレコード(重複データ)の出現回数をカウントする方法
はじめにMySQLでテーブル内の特定のレコード(重複データ)が何回出現するかを調べたい場合、集計関数の COUNT() と GROUP BY 句を組み合わせることで、1つのクエリで簡単に実現できます。この記事では、実際にサンプルテーブルを作成し、重複データの出現回数をカウントする手順をわかりやすく解説します。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-
MySQLで個別の値の出現回数をカウントし、結果を新しい列として表示する方法
MySQLでは、GROUP BY句とCOUNT()関数を組み合わせることで、各値が何回出現したかを簡単に集計できます。この記事では、実際にテーブルを作成し、重複する値の出現回数をカウントして結果を表示する手順を解説します。 1. サンプルテーブルの作成 まず、集計対象となるテーブルを作成しましょう。 mysql> create table DemoTable ( Value int ); Query OK, 0 rows affected (0.57 sec) 2. テストデータの挿入 INSERTコマンドを使って、いくつかのレコードを挿入します。意図的に同じ値を複数回登録し