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を除外して除算するカラム数を調整するなど、要件に応じた工夫が必要になる点も覚えておくとよいでしょう。
-
【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
-
MySQLで列の値の平均を計算し、小数点以下なしで結果を表示する方法
MySQLで列の値の平均を計算し、小数点以下を含まない整数として結果を表示するには、avg()関数とround()関数を組み合わせて使用します。この記事では、実際のサンプルコードを使いながら手順をわかりやすく解説します。 サンプルテーブルの作成 まず、平均を計算する対象となるテーブルを作成します。 mysql> create table DemoTable ( Score int ); Query OK, 0 rows affected (0.68 sec) レコードの挿入 次に、insertコマンドを使ってテーブルにデータを登録していきます。 mysql> insert