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; のように記述することもできます。
-
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)ここでは、学生名を
-
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. レコー