MySQLで行の値を合計して結果を並べ替えるクエリの書き方
MySQLで行の値を合計し、結果を並べ替える方法
テーブル内の同じキーを持つ行の値を合計し、その結果を並べ替えたい場合には、GROUP BY句とORDER BY句を組み合わせて使用します。GROUP BYで対象の列ごとにデータをグループ化し、SUM関数で合計値を算出した後、ORDER BYで並べ替えるという流れになります。
ここでは、生徒名と点数が登録されたテーブルを例に、生徒ごとの合計点を降順で取得する手順を解説します。
1. サンプルテーブルを作成する
まず、CREATE TABLE文でテーブルを作成します。
mysql> create table DemoTable1499
-> (
-> StudentName varchar(20),
-> StudentMarks int
-> );
Query OK, 0 rows affected (0.46 sec)
2. レコードを挿入する
INSERT文を使って、複数のレコードを登録します。同じ生徒名が複数回登場するようにデータを入れるのがポイントです。
mysql> insert into DemoTable1499 values('Chris',56);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1499 values('David',78);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1499 values('Bob',98);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1499 values('Chris',45);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1499 values('David',98);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1499 values('Bob',58);
Query OK, 1 row affected (0.11 sec)3. テーブルの中身を確認する
SELECT文で全レコードを表示してみましょう。
mysql> select * from DemoTable1499;
実行すると、次のような結果が得られます。
+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| Chris | 56 |
| David | 78 |
| Bob | 98 |
| Chris | 45 |
| David | 98 |
| Bob | 58 |
+-------------+--------------+
6 rows in set (0.00 sec)
4. 合計値を求めて並べ替えるクエリ
行の値を合計し、結果を降順で並べ替えるには、次のようにクエリを記述します。
mysql> select StudentName,sum(StudentMarks) as TotalSum from DemoTable1499
-> group by StudentName
-> order by TotalSum desc;
実行結果は以下の通りです。
+-------------+----------+
| StudentName | TotalSum |
+-------------+----------+
| David | 176 |
| Bob | 156 |
| Chris | 101 |
+-------------+----------+
3 rows in set (0.00 sec)
クエリのポイント
- SUM(StudentMarks) as TotalSum: SUM関数で点数の合計を計算し、「TotalSum」という別名を付けています。
- group by StudentName: 生徒名ごとに行をグループ化することで、同名の生徒の点数がまとめて集計されます。
- order by TotalSum desc: 別名「TotalSum」を基準に降順(desc)で並べ替えています。昇順にしたい場合は「asc」を指定してください。
このように、GROUP BYとORDER BYを組み合わせることで、集計結果を簡単にソートできます。売上集計やアクセスランキングなど、さまざまな場面で応用できる基本的なテクニックなので、ぜひ覚えておきましょう。
-
MySQLクエリでパーセンテージを計算し、結果を四捨五入する方法
MySQLでは、CONCAT()関数とROUND()関数を組み合わせることで、数値からパーセンテージを算出し、見やすい形式に四捨五入することができます。ここでは、実際にテーブルを作成しながら手順を順番に解説します。1. サンプルテーブルを作成するまずは、元となる数値を格納するためのテーブルを作成しましょう。mysql> create table DemoTable1844 ( Number int, TotalNumber int );Q
-
MySQLでSUM関数とFORMAT関数を組み合わせて集計結果をフォーマットする方法
MySQLでは、SUM()関数とFORMAT()関数を組み合わせることで、数値カラムの合計値を計算しつつ、結果を見やすい形式(桁区切りのカンマ付き・小数点以下の桁数指定)で表示できます。この記事では、実際にテーブルを作成し、データを挿入してから、SUM と FORMAT を組み合わせたクエリの実行方法を順を追って解説します。 1. テーブルの作成 まず、CREATE TABLE 文を使ってサンプル用のテーブルを作成します。ここでは、金額を格納する Amount カラム(FLOAT 型)を1つだけ持つシンプルなテーブルを用意しました。 mysql> create table DemoTa