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

MySQLで行(レコード)内の複数カラム値の平均を計算するクエリの書き方

MySQLである行(レコード)内に格納された複数のカラム値の平均を求めたい場合、各カラムの値を足し合わせて、カラム数で割るという方法が使えます。AVG()関数は列方向(縦)の平均を求めるためのもので、行方向(横)の平均にはそのまま使えない点に注意しましょう。

基本構文

行内の値の平均を計算するには、次のような構文を使用します。

SELECT (テーブル名.カラム名1 + テーブル名.カラム名2 + テーブル名.カラム名3 + ... + テーブル名.カラム名N) / カラム数 AS 別名
FROM テーブル名;

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

それでは、実際に動作を確認するためのテーブルを作成してみましょう。ここでは x、y、z という3つのint型カラムを持つテーブルを用意します。

mysql> create table calculateAverageDemo
    -> (
    -> x int,
    -> y int,
    -> z int
    -> );
Query OK, 0 rows affected (1.41 sec)

テストデータを挿入する

INSERT文を使って、サンプルデータを数件登録します。

mysql> insert into calculateAverageDemo values(10,20,30);
Query OK, 1 row affected (0.78 sec)
mysql> insert into calculateAverageDemo values(40,50,70);
Query OK, 1 row affected (0.26 sec)
mysql> insert into calculateAverageDemo values(80,90,220);
Query OK, 1 row affected (0.43 sec)

登録したレコードを確認する

SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認しましょう。

mysql> select *from calculateAverageDemo;

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

+------+------+------+
| x    | y    | z    |
+------+------+------+
| 10   | 20   | 30   |
| 40   | 50   | 70   |
| 80   | 90   | 220  |
+------+------+------+
3 rows in set (0.00 sec)

行の平均を計算するクエリ

それでは、各行の x、y、z の値を合計し、3で割ることで平均を求めてみます。計算結果には「AS Average」を使ってエイリアス(別名)を付けています。

mysql> select (calculateAverageDemo.x+calculateAverageDemo.y+calculateAverageDemo.z)/3
-> AS Average from calculateAverageDemo;

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

+----------+
| Average  |
+----------+
| 20.0000  |
| 53.3333  |
| 130.0000 |
+----------+
3 rows in set (0.06 sec)

このように、各行ごとの平均値が計算されて出力されます。なお、NULLが含まれる可能性があるカラムの場合は、IFNULL()関数でNULLを0に置き換えるか、NULLを除外して除算するカラム数を調整するなど、要件に応じた工夫が必要になる点も覚えておくとよいでしょう。

  1. 【MySQL】共通のIDに基づいて各行の値を1つに連結する方法(GROUP_CONCATの使い方)

    MySQLでは、GROUP_CONCAT()関数を使うことで、共通するIDを持つ複数行の値を1つの文字列にまとめて取得できます。本記事では、実際にテーブルを作成し、データを挿入してから、同じStudentIdを持つ行の名前を連結して表示するクエリを解説します。 1. サンプルテーブルの作成 まず、学生情報を格納するテーブルを作成します。 mysql> create table DemoTable ( StudentId int, StudentFirstName varchar(100), StudentLastName varchar(100) ); Quer

  2. MySQLで列の値の平均を計算し、小数点以下なしで結果を表示する方法

    MySQLで列の値の平均を計算し、小数点以下を含まない整数として結果を表示するには、avg()関数とround()関数を組み合わせて使用します。この記事では、実際のサンプルコードを使いながら手順をわかりやすく解説します。 サンプルテーブルの作成 まず、平均を計算する対象となるテーブルを作成します。 mysql> create table DemoTable ( Score int ); Query OK, 0 rows affected (0.68 sec) レコードの挿入 次に、insertコマンドを使ってテーブルにデータを登録していきます。 mysql> insert