sql >> データベース >  >> RDS >> Mysql

MySQLで2つの列のパーセンテージを計算する方法

    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日間の無料トライアルを提供しています。

    1. OracleWarehouseBuilderを使用したデータウェアハウスETLデータプロファイリング

    2. mysql_real_escape_string()は壊れていますか?

    3. オートコンプリートフィールド用の同様のUTF-8文字列

    4. T-SQLトリム&nbsp(およびその他の英数字以外の文字)