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

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を組み合わせることで、集計結果を簡単にソートできます。売上集計やアクセスランキングなど、さまざまな場面で応用できる基本的なテクニックなので、ぜひ覚えておきましょう。

  1. MySQLクエリでパーセンテージを計算し、結果を四捨五入する方法

    MySQLでは、CONCAT()関数とROUND()関数を組み合わせることで、数値からパーセンテージを算出し、見やすい形式に四捨五入することができます。ここでは、実際にテーブルを作成しながら手順を順番に解説します。1. サンプルテーブルを作成するまずは、元となる数値を格納するためのテーブルを作成しましょう。mysql> create table DemoTable1844     (     Number int,     TotalNumber int     );Q

  2. MySQLでSUM関数とFORMAT関数を組み合わせて集計結果をフォーマットする方法

    MySQLでは、SUM()関数とFORMAT()関数を組み合わせることで、数値カラムの合計値を計算しつつ、結果を見やすい形式(桁区切りのカンマ付き・小数点以下の桁数指定)で表示できます。この記事では、実際にテーブルを作成し、データを挿入してから、SUM と FORMAT を組み合わせたクエリの実行方法を順を追って解説します。 1. テーブルの作成 まず、CREATE TABLE 文を使ってサンプル用のテーブルを作成します。ここでは、金額を格納する Amount カラム(FLOAT 型)を1つだけ持つシンプルなテーブルを用意しました。 mysql> create table DemoTa