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

MySQLで重複するレコードの列の合計値を取得する方法

MySQLで重複レコードの列の合計を取得するには

重複しているレコード(同じ名前が複数回出現するデータなど)ごとに列の合計値を求めたい場合は、GROUP BY句集計関数SUM()を組み合わせて使用します。

1. サンプルテーブルの作成

まず、以下のようにテーブルを作成します。

mysql> create table DemoTable(
Name varchar(100),
Score int
);
Query OK, 0 rows affected (0.70 sec)

2. レコードの挿入

INSERT文を使って、サンプルデータをいくつか登録します。ここでは意図的に「Adam」や「Bob」といった重複する名前のデータを含めています。

mysql> insert into DemoTable values('Adam',50);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Bob',80);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Adam',70);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Adam',10);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Carol',98);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Bob',10);
Query OK, 1 row affected (0.08 sec)

3. テーブルの中身を確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

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

+-------+-------+
| Name | Score |
+-------+-------+
| Adam | 50 |
| Bob | 80 |
| Adam | 70 |
| Adam | 10 |
| Carol | 98 |
| Bob | 10 |
+-------+-------+
6 rows in set (0.00 sec)

4. 重複レコードごとの合計を求めるクエリ

以下のクエリを実行すると、Nameカラムでグループ化し、重複するレコードのScoreの合計値を取得できます。

mysql> select Name,sum(Score) from DemoTable group by Name;

実行結果は次のようになります。

+-------+------------+
| Name | sum(Score) |
+-------+------------+
| Adam | 130 |
| Bob | 90 |
| Carol | 98 |
+-------+------------+
3 rows in set (0.00 sec)

解説

GROUP BY句によって「Name」の値が同じレコードが1つのグループにまとめられ、SUM()関数が各グループ内のScoreの合計を計算します。そのため、「Adam」は50+70+10=130、「Bob」は80+10=90として表示されます。

なお、SUM(Score)の結果にわかりやすい別名を付けたい場合は、ASキーワードを使って select Name,sum(Score) AS TotalScore from DemoTable group by Name; のように記述することもできます。

  1. MySQLで重複レコードの値をSUM関数とGROUP BYで合計する方法

    MySQLでは、GROUP BY句とSUM関数を組み合わせることで、重複しているレコードの値をグループごとにまとめて合計できます。この記事では、学生名ごとに点数を集計する具体例を通して、その手順をわかりやすく解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> StudentName varchar(20), -> StudentMarks int -> );Query OK, 0 rows affected (0.68 sec)ここでは、学生名を

  2. MySQLで日付から曜日名を取得する方法(DAYNAME関数の使い方)

    MySQLで日付に対応する曜日名を取得するには?MySQLで日付データから曜日名(Sunday、Mondayなど)を取得したい場合は、DAYNAME()関数を使用します。この記事では、実際にテーブルを作成し、DAYNAME()関数を使って曜日名を取得する手順を解説します。1. テーブルを作成するまず、出荷日(ShippingDate)を格納するテーブルを作成しましょう。mysql> create table DemoTable1954 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコー