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

【MySQL入門】レコードをアルファベット順に並べ替えて重複をカウントするクエリの書き方

レコードをアルファベット順に並べ替えながら重複件数をカウントしたい場合は、GROUP BY句とORDER BY句を組み合わせて使用します。まずは、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
   (
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentGrade char(1)
   );
Query OK, 0 rows affected (0.87 sec)

上記のテーブルでは、学生ID(StudentId)を主キーとし、成績(StudentGrade)をchar型の1文字として定義しています。

テーブルへのデータ挿入

続いて、INSERT文を使ってテーブルにレコードを挿入していきます。

mysql> insert into DemoTable(StudentGrade) values('A');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentGrade) values('F');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentGrade) values('C');
Query OK, 1 row affected (0.28 sec)
mysql> insert into DemoTable(StudentGrade) values('A');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(StudentGrade) values('F');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentGrade) values('F');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(StudentGrade) values('B');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable(StudentGrade) values('C');
Query OK, 1 row affected (0.13 sec)

登録済みレコードの確認

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+-----------+--------------+
| StudentId | StudentGrade |
+-----------+--------------+
| 1         | A            |
| 2         | F            |
| 3         | C            |
| 4         | A            |
| 5         | F            |
| 6         | F            |
| 7         | B            |
| 8         | C            |
+-----------+--------------+
8 rows in set (0.00 sec)

合計8件のレコードが登録されており、同じ成績が複数存在していることが確認できます。

アルファベット順に並べ替えてカウントするクエリ

ここからが本題です。各成績の出現回数を集計し、結果をアルファベット順に並べ替えるには、以下のようなクエリを実行します。

mysql> select StudentGrade,count(StudentId) as Frequency from DemoTable 
   group by StudentGrade order by StudentGrade;

出力結果

+--------------+-----------+
| StudentGrade | Frequency |
+--------------+-----------+
| A            | 2         |
| B            | 1         |
| C            | 2         |
| F            | 3         |
+--------------+-----------+
4 rows in set (0.00 sec)

このクエリの仕組みを簡単に解説します。
まず、GROUP BY StudentGradeによって、同じ成績を持つレコードがグループ化されます。次に、COUNT(StudentId)関数で各グループ内のレコード件数を集計し、別名「Frequency」として表示しています。最後に、ORDER BY StudentGradeにより、結果がA、B、C、Fの順にアルファベット順でソートされます。

実行結果を見ると、成績「F」が3件と最も多く、「A」と「C」がそれぞれ2件、「B」が1件であることが一目でわかります。このようにGROUP BYとORDER BYを組み合わせることで、カテゴリ別の集計を見やすい形で取得できます。

  1. MySQLで結果を日付ごとにグループ化し、重複値の件数を表示するクエリの書き方

    はじめにMySQLでは、GROUP BY句とDATE()関数、COUNT()関数を組み合わせることで、日付単位でレコードをグループ化し、重複する値の件数を簡単に集計できます。ここでは、到着日時ごとに乗客コードを集計する例を通して、その具体的な方法を解説します。1. サンプルテーブルの作成まず、以下のSQLを実行してテーブルを作成します。mysql> create table DemoTable1496-> (-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,-> PassengerCode varchar(20),-> A

  2. MySQLで重複するタプルを検出してカウントを表示する方法

    MySQLで重複するタプル(同じ値の組み合わせを持つ行)を検出し、その出現回数を表示するには、GROUP BY句とHAVING句を組み合わせて使用します。この記事では、テーブルの作成から重複検出クエリの実行まで、手順を追って解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成します。 mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (0.80 sec) テストデータの挿入