MySQLで複数の列から値を計算する方法|SUM関数とGROUP BYの使い方
MySQLで複数の列から値を計算するには、SUM関数とGROUP BY句を組み合わせるのが効果的です。例えば、商品の「価格 × 重量」のような複数列の演算結果を、IDごとに集計したい場合に活用できます。
基本構文
select yourColumnName1, sum(yourColumnName2 * yourColumnName3) AS anyAliasName from yourTableName group by yourColumnName1;
この構文では、指定した列同士を演算した結果をSUM関数で合計し、GROUP BYによってグループごとに集計します。ASを使うことで、計算結果に別名を付けて見やすく表示できます。
サンプルテーブルの作成
まず、動作確認用のテーブルを作成します。ここでは商品ID、価格、重量を持つテーブルを例にします。
mysql> create table calculateValueDemo
-> (
-> Id int,
-> ProductPrice int,
-> ProductWeight int
-> );
Query OK, 0 rows affected (0.56 sec)レコードの挿入
次に、INSERTコマンドでテーブルにレコードを挿入します。
mysql> insert into calculateValueDemo values(100,35,5); Query OK, 1 row affected (0.16 sec) mysql> insert into calculateValueDemo values(101,50,3); Query OK, 1 row affected (0.16 sec) mysql> insert into calculateValueDemo values(100,100,4); Query OK, 1 row affected (0.17 sec) mysql> insert into calculateValueDemo values(101,500,2); Query OK, 1 row affected (0.22 sec)
テーブルの内容を確認
SELECT文で全レコードを表示し、データが正しく登録されているか確認しましょう。
mysql> select * from calculateValueDemo;
実行結果は以下の通りです。
+------+--------------+---------------+ | Id | ProductPrice | ProductWeight | +------+--------------+---------------+ | 100 | 35 | 5 | | 101 | 50 | 3 | | 100 | 100 | 4 | | 101 | 500 | 2 | +------+--------------+---------------+ 4 rows in set (0.00 sec)
複数の列から値を計算する
それでは、ProductPrice(価格)とProductWeight(重量)を掛け合わせ、その合計をIDごとに集計するクエリを実行します。
mysql> select Id, sum(ProductPrice * ProductWeight) AS Total from calculateValueDemo group by Id;
実行結果は以下の通りです。
+------+-------+ | Id | Total | +------+-------+ | 100 | 575 | | 101 | 1150 | +------+-------+ 2 rows in set (0.00 sec)
計算結果の解説
この結果は次のように計算されています。
- Id 100:35 × 5 = 175、100 × 4 = 400 → 合計 575
- Id 101:50 × 3 = 150、500 × 2 = 1000 → 合計 1150
このように、SUM関数とGROUP BYを組み合わせることで、複数の列を演算した結果をグループ単位で簡単に集計できます。売上金額の算出や在庫重量の集計など、実務でも幅広く活用できるテクニックなので、ぜひ覚えておきましょう。
-
MySQLで2つの列の最大値を基準にレコードを並べ替える方法
MySQLでは、GREATEST()関数をORDER BY句と組み合わせることで、2つの列のうち大きい方の値を基準にレコードを並べ替えることができます。この記事では、実際にテーブルを作成しながら、その手順をわかりやすく解説します。1. テーブルの作成まず、2つの整数型の列を持つテーブルを作成します。mysql> create table DemoTable834( Value1 int, Value2 int);Query OK, 0 rows affected (1.50 sec)2. レコードの挿入INSERT文を使
-
1つのMySQLクエリで複数のカラムのデータ型を変更する方法
MySQLでは、ALTER TABLE文を使うことで、テーブルのカラム定義を後から変更できます。複数のカラムのデータ型を一度に変更したい場合も、1つのクエリでまとめて実行可能です。基本構文単一のクエリで複数のカラムの型を変更するには、以下のように MODIFY COLUMN をカンマで区切って並べます。ALTER TABLE テーブル名 MODIFY COLUMN カラム名1 データ型1, MODIFY COLUMN カラム名2 データ型2, . . N;サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。mysql> create table DemoTable (