MySQLで1つの列から重複する値の出現回数を取得する方法
MySQLでは、GROUP BY句とCOUNT(*)関数を組み合わせることで、単一の列に含まれる重複した値がそれぞれ何回出現しているかを簡単に集計できます。ここでは、実際の手順をサンプルコード付きで解説します。
1. サンプルテーブルを作成する
まず、数値を格納するシンプルなテーブルを作成しましょう。
mysql> create table DemoTable -> ( -> Number int -> ); Query OK, 0 rows affected (0.83 sec)
2. テストデータを挿入する
INSERTコマンドを使って、意図的に重複を含むレコードをいくつか登録します。
mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable values(20); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable values(30); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.47 sec) mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.15 sec)
3. 登録されたデータを確認する
SELECT文ですべてのレコードを表示してみます。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+--------+ | Number | +--------+ | 20 | | 20 | | 10 | | 30 | | 10 | | 10 | +--------+ 6 rows in set (0.00 sec)
この時点で、テーブルには「20」が2件、「10」が3件、「30」が1件格納されていることがわかります。
4. 重複する値ごとの出現回数を取得する
単一の列から各値の出現回数(カウント)を取得するには、次のようにGROUP BY句を使用します。
mysql> select Number,count(*) from DemoTable group by Number;
実行結果は以下のようになります。
+--------+----------+ | Number | count(*) | +--------+----------+ | 20 | 2 | | 10 | 3 | | 30 | 1 | +--------+----------+ 3 rows in set (0.00 sec)
解説
GROUP BY Numberによって同じ値を持つ行がグループ化され、各グループに対してCOUNT(*)がその行数を返します。この結果から、「20」は2回、「10」は3回、「30」は1回出現していることが一目で確認できます。
なお、出力結果の見やすさを向上させたい場合は、ASキーワードを使って別名を付けることも可能です。例えば select Number,count(*) AS 出現回数 from DemoTable group by Number; のように記述すると、カウント列に任意の名前を付けて表示できます。
-
MySQLで列の値ごとに「NO」の件数のみをカウントして返すクエリの書き方
MySQLでは、SUM()関数と条件式を組み合わせることで、グループごとに特定の値(この例では「NO」)が出現した回数だけをカウントできます。ここでは、ENUM型のカラムを持つテーブルを例に、「NO」の件数のみを集計する方法を具体的な手順とともに解説します。 1. テーブルを作成する まず、サンプル用のテーブルを作成します。isTopperカラムはENUM型で、「YES」または「NO」のいずれかの値を持ちます。 mysql> create table DemoTable1829 ( Name varchar(
-
MySQLで重複するIDごとに最小値を取得する方法|MIN関数とGROUP BYの実例解説
MySQLでは、重複するIDが存在するテーブルから各IDに対応する列の最小値を取得したいケースがよくあります。例えば、同じ商品IDに対して複数の価格(float型)が登録されている場合などです。そんなときは、GROUP BY句とMIN()関数を組み合わせることで簡単に実現できます。基本構文重複IDごとの最小値を取得するには、以下のような構文を使用します。select min(対象カラム名) from テーブル名 group by グループ化するカラム名;サンプルテーブルの作成実際に動作を確認するため、まずはテーブルを作成しましょう。mysql> create table DemoTabl