sql >> Database >  >> RDS >> Mysql

Hoe het percentage van twee kolommen in MySQL te berekenen

Soms moet u eenvoudig een percentage van twee kolommen in MySQL-databases berekenen. Hier leest u hoe u eenvoudig het percentage van twee kolommen in MySQL kunt berekenen.

Hoe het percentage van twee kolommen in MySQL te berekenen

Hier zijn de SQL om het percentage van twee kolommen in MySQL te berekenen. Stel dat u de volgende tabel heeft: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 |
+-----------+------+------+

Stel dat u attainment_percent wilt berekenen als verkoop/doel*100 voor elke verkoper.

Hier is de SQL-query om het percentage van twee kolommen (verkoop, doel) te berekenen. U kunt het direct berekenen met behulp van de operatoren voor delen en vermenigvuldigen, zoals hieronder weergegeven.

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

Bonus lezen: Hoe u draaitabelquery's in MySQL kunt automatiseren

Als u de procentuele getallen op 2 decimalen wilt afronden, kunt u de ROUND-functie gebruiken zoals weergegeven

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

Als u het percentage van twee kolommen alleen voor specifieke rijen wilt berekenen, voegt u de WHERE-clausule toe, zoals hieronder vetgedrukt wordt weergegeven

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

Bonus lezen: Hoe het voortschrijdend gemiddelde te berekenen in MySQL

Als uw totale gegevens over meerdere kolommen zijn verdeeld, zoals hieronder weergegeven,

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

dan kunt u het percentage van elke kolom berekenen door hun waarden direct op te tellen, zoals hieronder weergegeven.

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

U kunt de bovenstaande zoekopdracht aanpassen om het percentage van twee kolommen te berekenen, volgens uw vereisten.

U kunt ook een rapportagetool gebruiken om deze gegevens in een tabel of dashboard te plotten en met uw team te delen. Hier is een voorbeeld van een tabel met bovenstaande gegevens, gemaakt met Ubiq.

Als u grafieken, dashboards en rapporten wilt maken vanuit de MySQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen aan.

  1. De beste manier om het aantal resultaten te krijgen voordat LIMIT werd toegepast

  2. Psycopg2 verbruikt geheugen bij grote selectiequery's

  3. Werken met MyISAM in MySQL

  4. Hoe APPROX_COUNT_DISTINCT() werkt in SQL Server