MySQLデータベースの2つの列のパーセンテージを単純に計算する必要がある場合があります。 MySQLで2つの列のパーセンテージを簡単に計算する方法は次のとおりです。
MySQLで2つの列のパーセンテージを計算する方法
MySQLの2つの列のパーセンテージを計算するSQLは次のとおりです。次のテーブルがあるとします– sales(sales_rep、sale、goal)
mysql> create table sales(sales_rep varchar(255),sale int, goal int);
mysql> insert into sales(sales_rep,sale,goal)
values('Albert',10,20),('Bob',23,33),('Chris',20,25),('Dave',35,40);
mysql> select * from sales;
+-----------+------+------+
| sales_rep | sale | goal |
+-----------+------+------+
| Albert | 10 | 20 |
| Bob | 23 | 33 |
| Chris | 20 | 25 |
| Dave | 35 | 40 |
+-----------+------+------+
営業担当者ごとに、達成率を販売/目標*100として計算するとします。
2つの列(販売、目標)のパーセンテージを計算するSQLクエリは次のとおりです。以下に示すように、除算演算子と乗算演算子を使用して、その場で直接計算できます。
mysql> select sales_rep,sale,goal, (sale/goal)*100 as attainment_percent from sales; +-----------+------+------+--------------------+ | sales_rep | sale | goal | attainment_percent | +-----------+------+------+--------------------+ | Albert | 10 | 20 | 50.0000 | | Bob | 23 | 33 | 69.6970 | | Chris | 20 | 25 | 80.0000 | | Dave | 35 | 40 | 87.5000 | +-----------+------+------+--------------------+
ボーナスリード:MySQLでピボットテーブルクエリを自動化する方法
パーセント数を小数点以下2桁に丸めたい場合は、次のようにROUND関数を使用できます
mysql> select sales_rep,sale,goal, round((sale/goal)*100,2) as attainment_percent from sales; +-----------+------+------+--------------------+ | sales_rep | sale | goal | attainment_percent | +-----------+------+------+--------------------+ | Albert | 10 | 20 | 50.00 | | Bob | 23 | 33 | 69.70 | | Chris | 20 | 25 | 80.00 | | Dave | 35 | 40 | 87.50 | +-----------+------+------+--------------------+
特定の行についてのみ2つの列のパーセンテージを計算する場合は、以下に太字で示すようにWHERE句を追加します
mysql> select sales_rep,sale,goal
,round((sale/goal)*100,2) as attainment_percent
from sales
where sales_rep in ('Bob','Dave');
+-----------+------+------+--------------------+
| sales_rep | sale | goal | attainment_percent |
+-----------+------+------+--------------------+
| Bob | 23 | 33 | 69.70 |
| Dave | 35 | 40 | 87.50 |
+-----------+------+------+--------------------+
ボーナスリード:MySQLで移動平均を計算する方法
以下に示すように、合計データが複数の列に分散している場合
mysql> create table sales(sales_rep varchar(255),sale int, sale2 int,sale3 int);
mysql> insert into sales(sales_rep,sale,sale2,sale3)
values('Albert',10,20,10),('Bob',23,33,20),
('Chris',20,25,15),('Dave',35,40,20);
mysql> select * from sales;
+-----------+------+-------+-------+
| sales_rep | sale | sale2 | sale3 |
+-----------+------+-------+-------+
| Albert | 10 | 20 | 10 |
| Bob | 23 | 33 | 20 |
| Chris | 20 | 25 | 15 |
| Dave | 35 | 40 | 20 |
+-----------+------+-------+-------+
次に、以下に示すように、その場で値を合計することにより、各列のパーセントを計算できます。
mysql> select sales_rep,sale, sale2,sale3, (sale/(sale+sale2+sale3))*100 as sale_pct, (sale2/(sale+sale2+sale3))*100 as sale2_pct, (sale3/(sale+sale2+sale3))*100 as sale3_pct from sales; +-----------+------+-------+-------+----------+-----------+-----------+ | sales_rep | sale | sale2 | sale3 | sale_pct | sale2_pct | sale3_pct | +-----------+------+-------+-------+----------+-----------+-----------+ | Albert | 10 | 20 | 10 | 25.0000 | 50.0000 | 25.0000 | | Bob | 23 | 33 | 20 | 30.2632 | 43.4211 | 26.3158 | | Chris | 20 | 25 | 15 | 33.3333 | 41.6667 | 25.0000 | | Dave | 35 | 40 | 20 | 36.8421 | 42.1053 | 21.0526 | +-----------+------+-------+-------+----------+-----------+-----------+
上記のクエリをカスタマイズして、要件に応じて2つの列のパーセンテージを計算できます。
レポートツールを使用して、このデータをテーブルまたはダッシュボードにプロットし、チームと共有することもできます。これは、Ubiqを使用して作成された上記のデータを含むテーブルの例です。
MySQLデータベースからチャート、ダッシュボード、レポートを作成したい場合は、Ubiqを試すことができます。 14日間の無料トライアルを提供しています。