MySQLで条件に基づいて列の合計(SUM)を取得する方法
はじめに
MySQLでは、SUM()関数とGROUP BY句を組み合わせることで、特定の条件に基づいて列の合計値を簡単に取得できます。この記事では、実際のサンプルコードを使って、テーブル作成から集計クエリの実行までの手順をわかりやすく解説します。
1. サンプルテーブルを作成する
まず、以下のコマンドでテーブルを作成します。
mysql> create table DemoTable1489
-> (
-> ProductId int,
-> ProductPrice int
-> );
Query OK, 0 rows affected (0.49 sec)
2. レコードを挿入する
次に、INSERTコマンドを使ってテーブルにデータを追加していきます。
mysql> insert into DemoTable1489 values(100,900); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable1489 values(115,1000); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1489 values(119,2100); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable1489 values(125,2100); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTable1489 values(128,2900); Query OK, 1 row affected (0.25 sec)
3. テーブルの内容を確認する
SELECT文で全レコードを表示し、データが正しく登録されているか確認しましょう。
mysql> select * from DemoTable1489;
実行結果は以下の通りです。
+-----------+--------------+ | ProductId | ProductPrice | +-----------+--------------+ | 100 | 900 | | 115 | 1000 | | 119 | 2100 | | 125 | 2100 | | 128 | 2900 | +-----------+--------------+ 5 rows in set (0.00 sec)
4. 条件に基づいて列の合計を取得する
ここが本題です。ProductIdを10で割った商(div演算子)ごとにグループ化し、それぞれのグループにおけるProductPriceの合計を求めます。
mysql> select ProductId div 10,sum(ProductPrice) from DemoTable1489
-> group by ProductId div 10;
実行結果:
+------------------+-------------------+ | ProductId div 10 | sum(ProductPrice) | +------------------+-------------------+ | 10 | 900 | | 11 | 3100 | | 12 | 5000 | +------------------+-------------------+ 3 rows in set (0.00 sec)
結果の解説
div演算子は整数除算を行います。例えば、ProductId「100」を10で割ると「10」、「115」と「119」は「11」、「125」と「128」は「12」というグループに分類されます。その結果、各グループの価格合計は以下のように計算されました。
- グループ10:900(ProductId = 100 のみ)
- グループ11:3100(ProductId = 115 + 119 → 1000 + 2100)
- グループ12:5000(ProductId = 125 + 128 → 2100 + 2900)
まとめ
このように、SUM()関数とGROUP BY句、さらにdivなどの演算子を組み合わせることで、柔軟な条件での集計が可能になります。売上データや在庫データの分析など、実務のさまざまな場面で活用できるテクニックなので、ぜひマスターしておきましょう。
-
MySQLでIF条件を使ったSUM(合計)クエリの書き方を実例で解説
MySQLのSUM関数とIF条件を組み合わせた集計クエリとはMySQLにおけるSUM()は、数値カラムの合計値を求めるための代表的な集計関数です。IF()関数と組み合わせることで、「特定の条件に一致する行だけを対象に合計を計算する」という柔軟な集計が可能になります。この記事では、実際にサンプルテーブルを作成し、IF条件付きのSUMクエリの使い方を段階的に解説します。サンプルテーブルの作成まず、支払い方法と金額を格納するテーブルを作成します。テーブル作成用のクエリは次のとおりです。mysql> create table SumWithIfCondition &nbs
-
JavaでResultSetから列名を取得する方法!MySQLを使ったgetMetaData()の実装例を解説
ResultSetから列名を取得するには?getMetaData()メソッドの基本JavaでJDBCを使ってデータベース操作を行っていると、「検索結果(ResultSet)に含まれる列名(カラム名)を動的に知りたい」という場面によく出会います。そんなときに活躍するのが、getMetaData()メソッドです。このメソッドを呼び出すと、結果セットの構造情報(列の数や名前、型など)を持つResultSetMetaDataオブジェクトを取得できます。プロトタイプ宣言は以下のとおりです。ResultSetMetaData getMetaData() throws SQLException;サンプル用テ