MySQLで同じ年齢の学生の人数(頻度)をカウントする方法|COUNT(*)とGROUP BYの基本
MySQLでは、COUNT(*)とGROUP BYを組み合わせることで、「同じ年齢の学生が何人いるのか」といった各年齢の出現回数(頻度)を簡単に集計できます。
この記事では、サンプルテーブルの作成からデータの挿入、そして実際に頻度をカウントするクエリの実行まで、手順を追ってわかりやすく解説します。
ステップ1:サンプルテーブルを作成する
まず、学生IDと年齢を格納するためのテーブルを作成します。StudentIdは自動採番される主キー(AUTO_INCREMENT+PRIMARY KEY)として定義しています。
mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentAge int ); Query OK, 0 rows affected (0.59 sec)
ステップ2:テーブルにレコードを挿入する
次に、INSERT文を使って13件分の学生データ(年齢)を登録します。
mysql> insert into DemoTable(StudentAge) values(16); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable(StudentAge) values(17); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable(StudentAge) values(18); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable(StudentAge) values(17); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable(StudentAge) values(17); Query OK, 1 row affected (0.23 sec) mysql> insert into DemoTable(StudentAge) values(17); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable(StudentAge) values(18); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable(StudentAge) values(18); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable(StudentAge) values(19); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable(StudentAge) values(19); Query OK, 1 row affected (0.07 sec) mysql> insert into DemoTable(StudentAge) values(16); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable(StudentAge) values(16); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable(StudentAge) values(15); Query OK, 1 row affected (0.16 sec)
ステップ3:登録したデータを確認する
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select * from DemoTable;
このクエリを実行すると、以下のような結果が得られます。
+-----------+------------+ | StudentId | StudentAge | +-----------+------------+ | 1 | 16 | | 2 | 17 | | 3 | 18 | | 4 | 17 | | 5 | 17 | | 6 | 17 | | 7 | 18 | | 8 | 18 | | 9 | 19 | | 10 | 19 | | 11 | 16 | | 12 | 16 | | 13 | 15 | +-----------+------------+ 13 rows in set (0.00 sec)
ステップ4:年齢ごとの頻度をカウントするクエリ
いよいよ本題の集計です。COUNT(*)で行数を数え、GROUP BY StudentAgeで年齢ごとにグループ化することで、年齢別の出現回数を求められます。カウント結果の列には、AS句を使って「AgeFrequency」という別名を付けています。
mysql> select StudentAge,count(*) AS `AgeFrequency` from DemoTable group by StudentAge;
このクエリを実行すると、次のように年齢ごとの学生数が出力されます。
+------------+--------------+ | StudentAge | AgeFrequency | +------------+--------------+ | 16 | 3 | | 17 | 4 | | 18 | 3 | | 19 | 2 | | 15 | 1 | +------------+--------------+ 5 rows in set (0.05 sec)
結果の読み方と押さえておきたいポイント
- 集計結果:16歳が3人、17歳が4人、18歳が3人、19歳が2人、15歳が1人であることがひと目でわかります。
- COUNT(*)の役割:グループ内の行数(レコード数)を数える集計関数です。
- GROUP BYの重要性:GROUP BYを指定しない場合、テーブル全体が1つのグループとして扱われてしまうため、集計対象の列(ここではStudentAge)を必ず指定してください。
- 応用テクニック:クエリの末尾に
ORDER BY count(*) DESCを追加すると、出現回数の多い年齢順に結果を並べ替えることができ、より見やすいレポートになります。
-
JavaでMySQLテーブルのカラム数を取得・カウントする方法
MySQLテーブルのカラム(列)数をJavaで取得するには、ResultSetMetaDataインターフェースを使用します。ResultSetMetaDataを活用すれば、カラムの総数だけでなく、各カラムの名前やデータ型といった詳細情報も簡単に取得できます。前提:サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。以下のSQLでは、3つのカラムを持つ「DemoTable」を作成しています。mysql> create table DemoTable -> ( -> St
-
MySQLで最も出現回数の多い値を取得する方法(ORDER BY COUNT(*)の使い方)
MySQLでカウント(出現回数)が最も多い値を取得する方法MySQLで特定のフィールドに出現回数が最も多い値を取得したい場合は、GROUP BYとORDER BY COUNT(*)を組み合わせます。この記事では、実際にテーブルを作成しながら、その手順をサンプルコード付きでわかりやすく解説します。1. サンプルテーブルの作成まず、CREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1940 ( FirstName varchar(20) ); Query OK, 0 rows affected (0.00 se