sql >> Databáze >  >> RDS >> Mysql

Jak vypočítat procento dvou sloupců v MySQL

Někdy možná budete muset jednoduše vypočítat procento ze dvou sloupců v databázích MySQL. Zde je návod, jak snadno vypočítat procento ze dvou sloupců v MySQL.

Jak vypočítat procento dvou sloupců v MySQL

Zde jsou SQL pro výpočet procenta dvou sloupců v MySQL. Řekněme, že máte následující tabulku – prodej(prodej_rep,prodej,cíl)

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 |
+-----------+------+------+

Řekněme, že chcete vypočítat attainment_percent jako prodej/cíl*100 pro každého obchodního zástupce.

Zde je dotaz SQL pro výpočet procenta ze dvou sloupců (prodej, cíl). Můžete jej vypočítat přímo za běhu pomocí operátorů dělení a násobení, jak je uvedeno níže.

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 |
+-----------+------+------+--------------------+

Bonusové čtení: Jak automatizovat dotazy na kontingenční tabulky v MySQL

Pokud chcete zaokrouhlit procenta na 2 desetinná místa, můžete použít funkci ROUND, jak je znázorněno

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 |
+-----------+------+------+--------------------+

Pokud chcete vypočítat procento ze dvou sloupců pouze pro konkrétní řádky, přidejte klauzuli WHERE, jak je uvedeno níže tučně

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 |
+-----------+------+------+--------------------+

Bonusové čtení: Jak vypočítat klouzavý průměr v MySQL

Pokud jsou vaše celková data rozložena do více sloupců, jak je uvedeno níže,

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 |
+-----------+------+-------+-------+

pak můžete vypočítat procento každého sloupce sečtením jejich hodnot za běhu, jak je znázorněno níže.

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 |
+-----------+------+-------+-------+----------+-----------+-----------+

Výše uvedený dotaz můžete přizpůsobit tak, aby vypočítal procento ze dvou sloupců, podle vašich požadavků.

Můžete také použít nástroj pro vytváření sestav k vykreslení těchto dat do tabulky nebo řídicího panelu a sdílet je se svým týmem. Zde je příklad tabulky s výše uvedenými daty vytvořené pomocí Ubiq.

Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze MySQL, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.

  1. Vytvoření sloučené tabulky/pohledu hierarchicky definované sady dat

  2. Jak exportovat data pomocí Oracle SQL Developer?

  3. Funkce NVL2() v Oracle

  4. Podmíněné pořadí T-SQL podle