MySQLで同じ列の複数行から整数値の合計を求める方法
MySQLでは、同じ列(カラム)に格納された複数行の整数値の合計を求めたい場面がよくあります。そんなときに便利なのがSUM()集計関数です。この記事では、実際にテーブルを作成し、データを挿入して、合計値を取得するまでの一連の手順をわかりやすく解説します。
1. テーブルの作成
まず、CREATE TABLE文でテーブルを作成します。ここではint型のPrice列を持つテーブルを用意しました。
mysql> create table DemoTable739 (Price int); Query OK, 0 rows affected (0.65 sec)
2. レコードの挿入
次に、INSERT文を使ってテーブルに複数のデータを追加していきます。
mysql> insert into DemoTable739 values(100); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable739 values(50); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable739 values(1200); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable739 values(500); Query OK, 1 row affected (0.37 sec) mysql> insert into DemoTable739 values(800); Query OK, 1 row affected (0.20 sec)
3. データの確認
SELECT文で登録済みのすべてのレコードを表示して確認しましょう。
mysql> select *from DemoTable739;
実行結果は以下の通りです。
+-------+ | Price | +-------+ | 100 | | 50 | | 1200 | | 500 | | 800 | +-------+ 5 rows in set (0.00 sec)
4. 合計を求めるクエリ
同じ列の複数行から整数の合計を求めるには、SUM()関数を使用します。また、AS句を使えば結果セットの列名に別名(エイリアス)を付けることも可能です。
mysql> select sum(Price) as Total_Price from DemoTable739;
このクエリを実行すると、以下のような出力が得られます。
+-------------+ | Total_Price | +-------------+ | 2650 | +-------------+ 1 row in set (0.00 sec)
まとめ
Price列の各値(100 + 50 + 1200 + 500 + 800)を合計した結果、「2650」という値が返されました。このようにSUM()関数は指定した列全体の値を自動的に合計してくれるため、WHERE句と組み合わせれば特定条件のデータだけを対象とした合計計算にも応用できます。売上集計や在庫数量の合算など、実務でも頻繁に使われる基本機能なので、ぜひマスターしておきましょう。
-
MySQLで複数のデータを一度に挿入する方法を解説
MySQLでは、INSERT文を複数回実行しなくても、1つのINSERT文で複数行のデータを同時にテーブルへ挿入できます。この方法を使うと、コードが簡潔になるだけでなく、データベースとの通信回数が減るため、大量のデータを挿入する際のパフォーマンス向上にもつながります。 複数行を挿入するための基本構文 複数のレコードを一度に挿入するには、VALUES句の後に値のセットをカンマで区切って並べます。構文は以下のとおりです。 INSERT INTO テーブル名 VALUES(値1, 値2, .....N), (値1, 値2, .....N), (値1, 値2, .....N), (値1, 値2, ..
-
MySQLで同じIDの行を合計する方法:GROUP BYとHAVING句の使い方
MySQLで同じIDを持つ複数の行の値を合計したい場合、「GROUP BY」句と「HAVING」句を組み合わせて使用します。この記事では、テーブルの作成からクエリの実行まで、手順を追ってわかりやすく解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成しましょう。ここでは「id」と「price」という2つのカラムを持つシンプルなテーブルを用意します。 例 mysql> create table demo84 -> ( -> id int, -> price int -> ) -> ; Query OK,