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

MySQLでSUM()などの集計関数を使わずに列の値を合計する方法

MySQLでは、SUM()のような集計関数を使わなくても、「+」演算子で列同士をつなげるだけで、行ごとの列の値を合計できます。この記事では、実際にテーブルを作成しながら、その具体的な手順をわかりやすく解説します。

基本構文

複数の列の値を加算し、任意の名前を付けた列として表示するには、次の構文を使用します。

SELECT *,(yourColumnName1+yourColumnName2+yourColumnName3,....N) as
anyVariableName from yourTableName;

サンプルテーブルの作成

構文の動きを確認するために、まずテーブルを作成しましょう。ここでは、生徒ごとに数学・物理・化学の点数を管理するテーブルを例にします。

mysql> create table AddingColumnDemo
    -> (
    -> StudentId int,
    -> StudentName varchar(20),
    -> MathMarks int,
    -> PhysicsMarks int,
    -> ChemistryMarks int
    -> );
Query OK, 0 rows affected (0.82 sec)

レコードの挿入

続いて、INSERT文を使ってテーブルにデータを登録します。

mysql> insert into AddingColumnDemo values(1,'John',35,45,76);
Query OK, 1 row affected (0.25 sec)

mysql> insert into AddingColumnDemo values(2,'Bob',67,76,88);
Query OK, 1 row affected (0.19 sec)

mysql> insert into AddingColumnDemo values(3,'Carol',45,56,43);
Query OK, 1 row affected (0.16 sec)

mysql> insert into AddingColumnDemo values(4,'Mike',82,75,71);
Query OK, 1 row affected (0.21 sec)

mysql> insert into AddingColumnDemo values(5,'Sam',92,89,88);
Query OK, 1 row affected (0.23 sec)

登録データの確認

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

mysql> select *from AddingColumnDemo;

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

+-----------+-------------+-----------+--------------+----------------+
| StudentId | StudentName | MathMarks | PhysicsMarks | ChemistryMarks |
+-----------+-------------+-----------+--------------+----------------+
|         1 | John        |        35 |           45 |             76 |
|         2 | Bob         |        67 |           76 |             88 |
|         3 | Carol       |        45 |           56 |             43 |
|         4 | Mike        |        82 |           75 |             71 |
|         5 | Sam         |        92 |           89 |             88 |
+-----------+-------------+-----------+--------------+----------------+
5 rows in set (0.00 sec)

列の値を加算するクエリを実行する

それでは、MathMarks・PhysicsMarks・ChemistryMarks の3つの列を加算し、TotalResult という別名で表示するクエリを実行します。

mysql> select *,(MathMarks+PhysicsMarks+ChemistryMarks) as TotalResult from AddingColumnDemo;

実行結果を見ると、各行の3科目の合計点が TotalResult 列に表示されていることがわかります。

+-----------+-------------+-----------+--------------+----------------+-------------+
| StudentId | StudentName | MathMarks | PhysicsMarks | ChemistryMarks | TotalResult |
+-----------+-------------+-----------+--------------+----------------+-------------+
|         1 | John        |        35 |           45 |             76 |         156 |
|         2 | Bob         |        67 |           76 |             88 |         231 |
|         3 | Carol       |        45 |           56 |             43 |         144 |
|         4 | Mike        |        82 |           75 |             71 |         228 |
|         5 | Sam         |        92 |           89 |             88 |         269 |
+-----------+-------------+-----------+--------------+----------------+-------------+
5 rows in set (0.00 sec)

まとめ

このように、集計関数に頼らなくても算術演算子「+」を使えば、行単位で列の値を自由に合計できます。追加したい列の数や種類があらかじめ決まっている場合は、非常にシンプルで読みやすいクエリになるのがメリットです。ただし、対象の列にNULLが含まれる可能性がある場合は、加算結果全体がNULLになってしまうため、IFNULL(列名, 0)のようにNULL処理を組み合わせておくと安全です。

  1. phpMyAdminでMySQLデータベースのカラムにAUTO_INCREMENT(自動採番)を追加する方法

    MySQLデータベースのカラムにAUTO_INCREMENT(自動インクリメント)を追加したい場合、ALTERコマンドを使用することで簡単に実現できます。本記事では、SQLコマンドによる方法と、phpMyAdminの画面操作による方法の2つをわかりやすく解説します。ALTERコマンドでAUTO_INCREMENTを追加する基本構文AUTO_INCREMENTを追加するには、以下のような構文を使用します。ALTER TABLE テーブル名 MODIFY カラム名 INT NOT NULL AUTO_INCREMENT;この構文では、既存のカラム定義をMODIFY句で変更し、NOT NULL制約と

  2. PythonでMySQLのカラムにコメントを追加する方法をわかりやすく解説

    コメントとは、コードやデータベースの構造に対して付ける「読み手のための説明文」のことです。プログラム内のコメントは、そのコードが何のために書かれたのかを示す役割を持ち、第三者がコードの意図や用途を理解する助けになります。コメントはコンパイラや実行エンジンによって無視されるため、処理には一切影響しません。しかし、保守性や可読性を高める上で非常に重要な要素です。テーブルのカラムにもコメントを付けられるSQLでは、テーブルの各カラム(列)にもコメントを追加できます。カラムにコメントを付けておくと、「このカラムが何を表しているのか」「どのような用途で使われるのか」がひと目で分かるようになります。特に、