SQLで点数から学生の達成率(パーセンテージ)を計算し、結果にパーセント記号(%)を付ける方法
MySQLでは、CONCAT()関数とROUND()関数を組み合わせることで、学生の点数から達成率を計算し、結果にパーセント記号(%)を付けて表示できます。ここでは、5科目の合計点をもとに達成率を求める手順を紹介します。
1. テーブルの作成
まず、点数を格納するテーブルを作成します。
mysql> create table DemoTable
(
Marks int
);
Query OK, 0 rows affected (0.62 sec)2. レコードの挿入
INSERTコマンドを使って、テーブルに点数データを登録します。
mysql> insert into DemoTable values(88); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(65); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(98); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(45); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(67); Query OK, 1 row affected (0.33 sec)
3. 登録したレコードの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような結果が得られます。
+-------+ | Marks | +-------+ | 88 | | 65 | | 98 | | 45 | | 67 | +-------+ 5 rows in set (0.00 sec)
4. 達成率の計算とパーセント記号の追加
それでは、5科目(満点500点)の点数をもとに達成率を計算するクエリを見ていきましょう。SUM(Marks)で合計点を求め、100を掛けて500で割ることで割合(%)を算出します。さらに、ROUND()で四捨五入し、CONCAT()で結果の末尾にパーセント記号(%)を連結します。
mysql> select concat(round(SUM(Marks)*100/500),'%') from DemoTable;
実行結果は以下の通りです。
+---------------------------------------+ | concat(round(SUM(Marks)*100/500),'%') | +---------------------------------------+ | 73% | +---------------------------------------+ 1 row in set (0.00 sec)
このように、合計点363点に対する達成率「73%」がパーセント記号付きの文字列として取得できました。なお、小数点以下も表示したい場合は、ROUND()の第2引数に桁数を指定するか、FORMAT()関数を利用すると柔軟に対応できます。
-
MySQLで学生の点数に基づいてカスタムメッセージを表示する方法
MySQLでは、CASE文を使うことで、点数などの数値データに応じてカスタムメッセージを動的に表示できます。この記事では、学生の点数が40点より大きいかどうかを判定し、「Good Marks」または「Not Good Marks」というメッセージを出力する具体的な手順を解説します。 1. サンプルテーブルを作成する まず、点数を格納するためのテーブルを作成しましょう。 mysql> create table DemoTable1952 ( Marks int ); Query OK, 0 rows affected (0.00 sec) 2. テストデータを挿入す
-
MySQLでSUM関数とFORMAT関数を組み合わせて集計結果をフォーマットする方法
MySQLでは、SUM()関数とFORMAT()関数を組み合わせることで、数値カラムの合計値を計算しつつ、結果を見やすい形式(桁区切りのカンマ付き・小数点以下の桁数指定)で表示できます。この記事では、実際にテーブルを作成し、データを挿入してから、SUM と FORMAT を組み合わせたクエリの実行方法を順を追って解説します。 1. テーブルの作成 まず、CREATE TABLE 文を使ってサンプル用のテーブルを作成します。ここでは、金額を格納する Amount カラム(FLOAT 型)を1つだけ持つシンプルなテーブルを用意しました。 mysql> create table DemoTa