sql >> Database >  >> RDS >> Mysql

Hoe bereken je het kolompercentage in MySQL

Soms moet u het percentage van een kolom (bijv. verkoop, omzet) in uw gegevens berekenen om te begrijpen welk percentage van de totale waarde van uw kolom uit elke rij komt (bijv. land, staat, enz.). Aangezien er geen kant-en-klare functie is om deze waarde te berekenen, moet u er een SQL-query voor schrijven. Zo berekent u het percentage van de kolom in MySQL

Hoe bereken je het kolompercentage in MySQL

Stel dat u de volgende tabel heeft, zoals hieronder weergegeven.

mysql> create table sales(rep varchar(255),sale int);

mysql> insert into sales values('Bob',15),('Sally',30),('Peter',15);

mysql> select * from sales;
+-------+------+
|  rep  | sale |
+-------+------+
|  Bob  |  15  |
| Sally |  30  |
| Peter |  15  |
+-------+------+

Stel dat u een kolom 'percentage van totaal' wilt weergeven, wat eenvoudigweg het percentage is van de totale verkoop kolom, zoals hieronder weergegeven.

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

U kunt dit op meerdere manieren doen met slechts één enkele query. Het is niet nodig om aparte query's te schrijven voor het berekenen van totaal en percentage. Laten we ze allemaal bekijken

Bonus lezen: Hoe het percentage van twee kolommen in MySQL te berekenen

Hoe bereken je het kolompercentage in MySQL met CROSS JOIN

Om het percentage van de kolom in MySQL te berekenen, kunt u eenvoudig de sum() . kruisen van verkoop kolom met de originele tabel.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total`
FROM sales
CROSS JOIN (SELECT SUM(sale) AS s FROM sales) t;

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

Als u een waar-clausule wilt toevoegen om uw gegevens te filteren, moet u deze na de CROSS JOIN plaatsen, zoals hieronder wordt weergegeven. Anders krijg je een foutmelding.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total`
FROM sales
CROSS JOIN (SELECT SUM(sale) AS s FROM sales) t where Rep='Bob';
+------+------+------------------+
| Rep  | Sale | percent of total |
+------+------+------------------+
| Bob  |  15  |       25         |
+------+------+------------------+

Als u echter de where-component wilt toevoegen tijdens het optellen van de kolom, moet u deze toevoegen aan de select-component van het totaal, zoals hieronder wordt weergegeven. Laten we zeggen dat je Bob wilt uitsluiten van het totaal zelf, dan is hier een vraag om dit te doen.

SELECT Rep, Sale, Sale * 100 / t.s AS `percent of total` 
FROM sales 
CROSS JOIN (SELECT SUM(sale) AS s FROM sales where Rep<>'Bob') t 
where Rep<>'Bob';
+-------+------+------------------+
|  Rep  | Sale | percent of total |
+-------+------+------------------+
| Sally |  30  |      66.6667     |
| Peter |  15  |      33.3333     |
+-------+------+------------------+

Bonus lezen:Hoe u het groeipercentage per week in MySQL kunt berekenen

Hoe bereken je het kolompercentage in MySQL met SUBSELECT/SUBQUERY

U kunt ook het percentage van de kolom berekenen met een subselectie, in plaats van een JOIN te gebruiken, zoals hieronder weergegeven.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales) AS `percent of total`
FROM sales;

+-------+------+------------------+
|  rep  | sale | percent of total |
+-------+------+------------------+
|  Bob  |  15  |        25        |
| Sally |  30  |        50        |
| Peter |  15  |        25        |
+-------+------+------------------+

Als u een waar-clausule wilt toevoegen om uw gegevens te filteren, moet u deze na de CROSS JOIN plaatsen, zoals hieronder wordt weergegeven. Anders krijg je een foutmelding.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales) AS `percent of total` 
FROM sales
where Rep='Bob';
+--------+--------+-------------------+
|   Rep  |  Sale  |  percent of total |
+--------+--------+-------------------+
|  Bob   |    15  |         25        |
+--------+--------+-------------------+

Als u echter de where-component wilt toevoegen tijdens het optellen van de kolom, moet u deze toevoegen aan de select-component van total. Laten we zeggen dat je Bob wilt uitsluiten van het totaal zelf, dan is hier een vraag om dit te doen.

SELECT Rep, Sale, 
Sale * 100 / (SELECT SUM(sale) AS s FROM sales where Rep='Bob') AS `percent of total` 
FROM sales
where Rep='Bob';
+-------+------+------------------+
|  Rep  | Sale | percent of total |
+-------+------+------------------+
| Sally |  30  |      66.6667     |
| Peter |  15  |      33.3333     |
+-------+------+------------------+

U kunt de bovenstaande zoekopdrachten aanpassen aan uw vereisten om het percentage van de kolom in MySQL te berekenen.

Verder kunt u een rapportagetool gebruiken om de gegevens in een cirkeldiagram of dashboard te plotten. Hier is een voorbeeld van een cirkeldiagram 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.

  1. Wiskundige functies van SQL Server (volledige lijst)

  2. Transformatie van functionaliteit van wrapperklasse

  3. Verbinding maken met MySQL-server na installatie van XAMPP op Mac OS

  4. Voeg meerdere rijen in SQLite-fout in (foutcode =1)