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

MySQLで特定の複数行(全行ではない)の合計値を取得する方法

MySQLで特定の行だけの合計値を取得するには?

MySQLでは、集計関数SUM()WHERE句を組み合わせることで、テーブル内の特定の行(すべての行ではなく)の値の合計を簡単に求めることができます。本記事では、IN演算子を使って対象となる行を絞り込み、合計を取得する手順をサンプルコード付きで解説します。

1. サンプルテーブルを作成する

まず、デモ用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Amount int
);
Query OK, 0 rows affected (0.65 sec)

2. レコードを挿入する

insertコマンドを使用して、テーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable(Amount) values(400);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(Amount) values(10);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Amount) values(50);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(Amount) values(500);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Amount) values(80);
Query OK, 1 row affected (0.09 sec)

3. テーブルの内容を確認する

select文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

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

+----+--------+
| Id | Amount |
+----+--------+
| 1  | 400    |
| 2  | 10     |
| 3  | 50     |
| 4  | 500    |
| 5  | 80     |
+----+--------+
5 rows in set (0.00 sec)

4. 特定の行のみの合計を取得する

ここがポイントです。WHERE句にIN演算子を組み合わせることで、指定したIdの行だけを対象に合計を計算できます。以下の例では、Idが「1」「4」「5」の行のAmountの合計を取得しています。

mysql> select sum(Amount) from DemoTable where Id in(1,4,5);

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

+-------------+
| sum(Amount) |
+-------------+
| 980         |
+-------------+
1 row in set (0.00 sec)

出力を見ると、Id 1(400)、Id 4(500)、Id 5(80)の合計である「980」が正しく返されていることがわかります。このように WHERE ... IN (...) を使えば、全行ではなく任意の複数行だけを柔軟に集計できます。条件が単一の行であれば = を、範囲指定であれば BETWEEN を使うなど、目的に応じてWHERE句の書き方を変えるのも有効です。

  1. MySQLでテーブルの最後から2番目のレコードを取得する方法

    MySQLで最後から2番目のレコード(末尾の一つ前のレコード)を取得したい場合、サブクエリを利用します。単純に ORDER BY ... DESC LIMIT 1 を使うと最後のレコードしか取得できないため、サブクエリと組み合わせることで後ろから2番目のデータを取り出せます。基本構文SELECT * FROM (SELECT * FROM yourTableName ORDER BY yourIdColumnName DESC LIMIT 2) anyAliasName ORDER BY yourIdColumnName LIMIT 1;この構文のポイントは以下の通りです。内側のサブクエリでI

  2. JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法

    MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI