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

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

MySQLで列の値の平均を計算し、小数点以下を含まない整数として結果を表示するには、avg()関数とround()関数を組み合わせて使用します。この記事では、実際のサンプルコードを使いながら手順をわかりやすく解説します。

サンプルテーブルの作成

まず、平均を計算する対象となるテーブルを作成します。

mysql> create table DemoTable
(
    Score int
);
Query OK, 0 rows affected (0.68 sec)

レコードの挿入

次に、insertコマンドを使ってテーブルにデータを登録していきます。

mysql> insert into DemoTable values(98);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values(97);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(91);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(86);
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(45);
Query OK, 1 row affected (0.12 sec)

テーブルの内容を確認する

select文を実行して、登録されたすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

このクエリを実行すると、次のような出力が得られます。

+-------+
| Score |
+-------+
|    98 |
|    97 |
|    91 |
|    86 |
|    45 |
+-------+
5 rows in set (0.00 sec)

小数点以下なしで平均値を計算するクエリ

列の値の平均を計算し、小数点以下を表示せずに結果を取得するには、以下のようにクエリを記述します。round(avg(Score), 0)と指定することで、平均値が四捨五入され、整数値として返されます。

mysql> select round(avg(Score),0) AS Average from DemoTable;

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

+---------+
| Average |
+---------+
|      83 |
+---------+
1 row in set (0.00 sec)

この例では、5件のスコア(98、97、91、86、45)の平均は83.4ですが、round()によって「83」と表示されています。

補足:用途に応じた別の関数

四捨五入ではなく切り捨てを行いたい場合は、truncate()floor()関数を利用できます。逆に切り上げたい場合はceiling()が便利です。また、結果を読みやすく整形したい場合にはformat()関数を使うと桁区切りも同時に処理できます。目的に合わせて最適な関数を選びましょう。

  1. MySQLで特定の列の値の文字数を取得し、合計を表示する方法

    MySQLでは、CHAR_LENGTH()関数とSUM()関数を組み合わせることで、特定の列に格納された値の文字数を取得し、その合計を簡単に求めることができます。この記事では、実際のサンプルを使いながら、テーブルの作成から集計クエリの実行までの手順をわかりやすく解説します。テーブルを作成するまず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1612    -> (    -> FirstName varchar(20),  &

  2. MySQLで列の値と任意のテキストを連結して1つの列に表示する方法

    MySQLで列の値とテキストを連結する方法MySQLでは、CONCAT()関数を使用することで、テーブルの列の値と任意のテキストを連結し、結果を1つの列として表示できます。本記事では、サンプルテーブルを作成し、実際に文字列を連結して表示するまでの手順を具体例とともに解説します。1. テーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int, -> Name varchar(20) -> );Query OK, 0 rows affected (0.93 sec)こ