MySQLクエリで列の数値の平均を計算する方法
MySQLでは、集計関数のAVG()を使うことで、列に含まれる数値の平均値を簡単に計算できます。この記事では、実際にテーブルを作成し、AVG()関数を使って平均を求める手順を順番に解説します。
AVG()関数の基本構文
平均を計算するための基本構文は以下のとおりです。
SELECT AVG(カラム名) AS 任意の別名 FROM テーブル名;
サンプルテーブルの作成
まず、動作を確認するためのテーブルを作成しましょう。以下はテーブル作成用のクエリです。
mysql> create table AverageCalculateDemo -> ( -> SubjectMarks int -> ); Query OK, 0 rows affected (0.67 sec)
レコードの挿入
次に、作成したテーブルにいくつかのレコードを挿入します。
mysql> insert into AverageCalculateDemo values(70); Query OK, 1 row affected (0.14 sec) mysql> insert into AverageCalculateDemo values(80); Query OK, 1 row affected (0.19 sec) mysql> insert into AverageCalculateDemo values(65); Query OK, 1 row affected (0.13 sec) mysql> insert into AverageCalculateDemo values(55); Query OK, 1 row affected (0.13 sec) mysql> insert into AverageCalculateDemo values(60); Query OK, 1 row affected (0.23 sec)
登録データの確認
SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from AverageCalculateDemo;
実行結果は以下のとおりです。
+--------------+ | SubjectMarks | +--------------+ | 70 | | 80 | | 65 | | 55 | | 60 | +--------------+ 5 rows in set (0.00 sec)
AVG()関数で平均を計算する
それでは、MySQLで列の平均値を計算するクエリを実行します。
mysql> select avg(SubjectMarks) as AverageOf4Numbers from AverageCalculateDemo;
実行結果として、平均値が表示されます。
+-------------------+ | AverageOf4Numbers | +-------------------+ | 66.0000 | +-------------------+ 1 row in set (0.00 sec)
このように、AVG()関数を使用すれば、SQL文を1行書くだけで列全体の平均値を取得できます。AS句で別名を指定すると、結果セットの見出しが分かりやすくなるのでおすすめです。
-
MySQLでテーブルの重複を除いたレコードから平均値を取得するクエリの書き方
MySQLで平均値を求めるには AVG() 関数を使用します。さらに DISTINCT と組み合わせることで、重複しているレコードを除外した状態で平均を計算することができます。この記事では、実際にサンプルテーブルを作成しながら、個別(ユニーク)なレコードから平均値を取得する方法を解説します。サンプルテーブルの作成まず、以下のクエリでテーブルを作成します。mysql> create table DemoTable1934 ( StudentName varchar(20), StudentMarks int ); Query OK, 0 rows affec
-
「UP」という同じ名前の列を持つ5つのテーブルの合計を計算するMySQLクエリ
解決方法の概要 「UP」という同じ名前の列を持つ複数のテーブルから合計値を計算するには、UNION ALLとSUM()関数を組み合わせて使用します。各テーブルごとにSUM()で合計を求め、UNION ALLでその結果を縦に連結し、最後に外側のSUM()によって全体の合計値を取得します。 サンプルテーブルの作成 まず、動作確認用に5つのテーブルを作成します。1つ目のテーブルは以下のように作成し、データを挿入します。 mysql> create table DemoTable1977 ( UP int ); Query OK, 0 rows affected (0.0