sql >> Databasteknik >  >> RDS >> Mysql

Hur man beräknar procentandelen av två kolumner i MySQL

Ibland kan du behöva helt enkelt beräkna en procentandel av två kolumner i MySQL-databaser. Så här beräknar du enkelt procentandelen av två kolumner i MySQL.

Hur man beräknar procentandelen av två kolumner i MySQL

Här är SQL för att beräkna procentandelen av två kolumner i MySQL. Låt oss säga att du har följande tabell – försäljning(försäljningsrep,försäljning,må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 |
+-----------+------+------+

Låt oss säga att du vill beräkna atttainment_percent som försäljning/mål*100 för varje säljare.

Här är SQL-frågan för att beräkna procentandelen av två kolumner (försäljning, mål). Du kan beräkna det direkt med hjälp av divisions- och multiplikationsoperatorer, som visas nedan.

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

Bonusläsning: Hur man automatiserar pivottabellsfrågor i MySQL

Om du vill avrunda procenttalen till 2 decimaler kan du använda funktionen RUNDA som visas

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

Om du bara vill beräkna procentandelen av två kolumner för specifika rader, lägg till WHERE-sats som visas nedan i fetstil

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

Bonusläsning: Hur man beräknar glidande medelvärde i MySQL

Om din totala data är spridd över flera kolumner, som visas nedan,

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

sedan kan du beräkna procent av varje kolumn genom att summera deras värden i farten, som visas nedan.

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

Du kan anpassa frågan ovan för att beräkna procentandelen av två kolumner, enligt dina krav.

Du kan också använda ett rapportverktyg för att plotta denna data på en tabell eller instrumentpanel och dela den med ditt team. Här är ett exempel på en tabell med ovanstående data, skapad med Ubiq.

Om du vill skapa diagram, instrumentpaneler och rapporter från MySQL-databasen kan du prova Ubiq. Vi erbjuder en 14-dagars gratis provperiod.

  1. Postgres-begränsning för unikt datumintervall

  2. Bevilja alla på ett specifikt schema i db till en grupproll i PostgreSQL

  3. SQL JOIN vs IN prestanda?

  4. Hur skriver man en begränsning angående ett max antal rader i postgresql?