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

MySQLで同じ値を持つ行の数をカウントする方法

MySQLでは、COUNT(*)関数GROUP BY句を組み合わせることで、同じ値を持つ行の数を簡単に集計できます。データベースの分析や重複データの確認など、実務でもよく使われるテクニックです。

基本構文

同じ値を持つ行をカウントする基本的な構文は以下のとおりです。

SELECT カラム名1, COUNT(*) AS 別名
FROM テーブル名
GROUP BY カラム名1;

GROUP BYで指定したカラムの値ごとに行がグループ化され、COUNT(*)が各グループ内の行数を返します。

サンプルテーブルの作成

構文を理解するために、まずテーブルを作成しましょう。以下のクエリで学生情報を管理するテーブルを作成します。

mysql> CREATE TABLE RowWithSameValue (
    ->   StudentId INT,
    ->   StudentName VARCHAR(100),
    ->   StudentMarks INT
    -> );
Query OK, 0 rows affected (0.55 sec)

このテーブルには、学生ID・氏名・点数の3つのカラムが定義されています。

テストデータの挿入

次に、同じ値を持つレコードを挿入します。この例では、複数の学生に同じ点数(89点)を設定しています。

mysql> INSERT INTO RowWithSameValue VALUES(100, 'Carol', 89);
Query OK, 1 row affected (0.21 sec)

mysql> INSERT INTO RowWithSameValue VALUES(101, 'Sam', 89);
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO RowWithSameValue VALUES(102, 'John', 99);
Query OK, 1 row affected (0.12 sec)

mysql> INSERT INTO RowWithSameValue VALUES(103, 'Johnson', 89);
Query OK, 1 row affected (0.15 sec)

挿入したデータの確認

登録したすべてのレコードを表示して確認してみましょう。

mysql> SELECT * FROM RowWithSameValue;

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

+-----------+-------------+--------------+
| StudentId | StudentName | StudentMarks |
+-----------+-------------+--------------+
|       100 | Carol       |           89 |
|       101 | Sam         |           89 |
|       102 | John        |           99 |
|       103 | Johnson     |           89 |
+-----------+-------------+--------------+
4 rows in set (0.00 sec)

4件のうち、89点を取っている学生が3名、99点が1名であることが確認できます。

同じ値を持つ行をカウントするクエリを実行

それでは、冒頭で紹介した構文を使って、同じ値(点数)を持つ行の数をカウントしてみましょう。

mysql> SELECT StudentMarks, COUNT(*) AS SameValue
    -> FROM RowWithSameValue
    -> GROUP BY StudentMarks;

実行結果

各値ごとの出現回数が表示されます。

+--------------+-----------+
| StudentMarks | SameValue |
+--------------+-----------+
|           89 |         3 |
|           99 |         1 |
+--------------+-----------+
2 rows in set (0.00 sec)

結果から、「89点」の行は3件、「99点」の行は1件あることがわかります。このように、GROUP BYでグループ化したカラムごとにCOUNT(*)で集計することで、同じ値を持つ行の数を一目で把握できます。

まとめ

  • COUNT(*):グループ内の行数をカウントする集計関数
  • GROUP BY:指定したカラムの値ごとに行をグループ化する
  • AS 別名:結果のカラムにわかりやすい名前を付ける

この組み合わせは、売上データの商品別集計や、ログデータのエラー種別ごとの発生件数カウントなど、さまざまな場面で応用できる便利なテクニックです。

  1. 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 s

  2. MySQLで特定の値を持つ列の数をカウントする方法【SUM関数の活用】

    はじめにMySQLでは、SUM関数と加算演算子(+)・論理演算子(AND)を組み合わせることで、テーブル内の複数の列に含まれる特定の値(たとえば「1」)の合計個数や、すべての列がその値を持つ行数を簡単に集計できます。本記事では、サンプルテーブルを作成しながら、具体的なSQLクエリの書き方と実行結果をわかりやすく解説します。基本構文特定の値を持つ列の数をカウントする場合、以下のような構文を使用します。selectsum(yourColumnName1 + yourColumnName2 + yourColumnName3 ... N) as `anyAliasName1`,sum(yourCol