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

同じIDが繰り返される行の値を合計するMySQLクエリの書き方

MySQLで同じIDが複数回出現する行の値を合計したい場合は、集計関数 SUM() を使用します。この記事では、実際にテーブルを作成し、IDごとにPrice(価格)を合計する方法を手順を追って解説します。

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

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

mysql> create table DemoTable850(
    Id int,
    Price int
);
Query OK, 0 rows affected (0.54 sec)

2. テストデータの挿入

次に、INSERTコマンドを使ってレコードを挿入します。ここでは、同じIDを持つ行を意図的に複数作成しています。

mysql> insert into DemoTable850 values(1,90);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable850 values(2,100);
Query OK, 1 row affected (0.55 sec)
mysql> insert into DemoTable850 values(2,50);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable850 values(1,80);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable850 values(1,60);
Query OK, 1 row affected (0.10 sec)

3. 挿入したデータの確認

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

mysql> select *from DemoTable850;

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

+------+-------+
| Id   | Price |
+------+-------+
| 1    | 90    |
| 2    | 100   |
| 2    | 50    |
| 1    | 80    |
| 1    | 60    |
+------+-------+
5 rows in set (0.00 sec)

このように、Id「1」が3行、「2」が2行と重複して登録されているのがわかります。

4. 繰り返されるIDの行を合計するクエリ

特定のIDを持つ行の値を合計するには、WHERE句で対象のIDを絞り込み、SUM() 関数で合計を求めます。

mysql> select Id,SUM(Price) from DemoTable850 where Id=1;

実行結果:

+------+------------+
| Id   | SUM(Price) |
+------+------------+
| 1    | 230        |
+------+------------+
1 row in set (0.00 sec)

5. 補足:すべてのIDごとに合計を求める場合

特定のIDだけでなく、すべてのIDごとの合計を一度に取得したい場合は、GROUP BY句を使います。

mysql> select Id,SUM(Price) from DemoTable850 group by Id;

実行結果:

+------+------------+
| Id   | SUM(Price) |
+------+------------+
| 1    | 230        |
| 2    | 150        |
+------+------------+
2 rows in set (0.00 sec)

まとめ

重複するIDを持つ行の値を合計するには、SUM() 集計関数を使用します。特定のIDだけを対象にする場合はWHERE句、すべてのIDごとの合計を求める場合はGROUP BY句を組み合わせることで、柔軟に集計処理を行うことができます。

  1. 正の値を持つ行に対してTRUEを返すMySQLクエリの書き方

    MySQLで正の値を持つ行に対してTRUE(1)を返し、負の値に対してはFALSE(0)を返したい場合は、IF()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、具体的なクエリの書き方を解説します。 1. サンプルテーブルを作成する まず、CREATE TABLE文を使ってテーブルを作成します。 mysql> create table DemoTable2038     -> (     -> Id int NOT NULL AUTO_INCREMENT

  2. MySQLで同じIDの行を合計する方法:GROUP BYとHAVING句の使い方

    MySQLで同じIDを持つ複数の行の値を合計したい場合、「GROUP BY」句と「HAVING」句を組み合わせて使用します。この記事では、テーブルの作成からクエリの実行まで、手順を追ってわかりやすく解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成しましょう。ここでは「id」と「price」という2つのカラムを持つシンプルなテーブルを用意します。 例 mysql> create table demo84 -> ( -> id int, -> price int -> ) -> ; Query OK,