sql >> Database teknologi >  >> RDS >> Mysql

Sådan beregnes procentdelen af ​​to kolonner i MySQL

Nogle gange skal du måske blot beregne en procentdel af to kolonner i MySQL-databaser. Sådan kan du nemt beregne procentdelen af ​​to kolonner i MySQL.

Sådan beregnes procentdelen af ​​to kolonner i MySQL

Her er SQL til at beregne procentdelen af ​​to kolonner i MySQL. Lad os sige, at du har følgende tabel – salg(salg_rep,salg,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 |
+-----------+------+------+

Lad os sige, at du vil beregne attainment_percent som salg/mål*100 for hver sælger.

Her er SQL-forespørgslen til at beregne procentdelen af ​​to kolonner (salg, mål). Du kan beregne det direkte ved hjælp af divisions- og multiplikationsoperatorer, som vist nedenfor.

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: Sådan automatiseres pivottabelforespørgsler i MySQL

Hvis du vil afrunde procenttallene til 2 decimaler, kan du bruge RUND-funktionen som vist

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

Hvis du kun vil beregne procentdelen af ​​to kolonner for specifikke rækker, skal du tilføje WHERE-sætning som vist nedenfor med fed skrift

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æser: Sådan beregner du glidende gennemsnit i MySQL

Hvis dine samlede data er spredt over flere kolonner, som vist nedenfor,

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

så kan du beregne procent af hver kolonne ved at summere deres værdier i farten, som vist nedenfor.

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 tilpasse ovenstående forespørgsel til at beregne procentdelen af ​​to kolonner i henhold til dit krav.

Du kan også bruge et rapporteringsværktøj til at plotte disse data på en tabel eller et dashboard og dele dem med dit team. Her er et eksempel på en tabel med ovenstående data, oprettet ved hjælp af Ubiq.

Hvis du vil oprette diagrammer, dashboards og rapporter fra MySQL-databasen, kan du prøve Ubiq. Vi tilbyder en 14-dages gratis prøveperiode.

  1. MySQL vs PostgreSQL til webapplikationer

  2. ORA-00838

  3. Håndteringsdato i SQL Server

  4. Kan ikke indlæse SqlServerSpatial.dll