Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment calculer le pourcentage de colonne dans MySQL

Parfois, vous devrez peut-être calculer le pourcentage d'une colonne (par exemple, les ventes, les revenus) dans vos données pour comprendre quel pourcentage de la valeur totale de votre colonne provient de chaque ligne (par exemple, pays, état, etc.). Puisqu'il n'y a pas de fonction prête à l'emploi pour calculer cette valeur, vous devez écrire une requête SQL pour celle-ci. Voici comment calculer le pourcentage de colonne dans MySQL

Comment calculer le pourcentage de colonne dans MySQL

Disons que vous avez le tableau suivant comme indiqué ci-dessous.

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

Supposons que vous souhaitiez afficher une colonne "pourcentage du total" qui correspond simplement au pourcentage du total des ventes colonne, comme indiqué ci-dessous.

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

Vous pouvez le faire de plusieurs façons en utilisant une seule requête. Il n'est pas nécessaire d'écrire des requêtes distinctes pour calculer le total et le pourcentage. Regardons chacun d'eux

Lecture bonus : Comment calculer le pourcentage de deux colonnes dans MySQL

Comment calculer le pourcentage de colonne dans MySQL à l'aide de CROSS JOIN

Pour calculer le pourcentage de colonne dans MySQL, vous pouvez simplement croiser le sum() de vente colonne avec le tableau d'origine.

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

Si vous souhaitez ajouter une clause where pour filtrer vos données, vous devez la placer après le CROSS JOIN, comme indiqué ci-dessous. Sinon, vous obtiendrez une erreur.

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

Cependant, si vous souhaitez ajouter une clause where lors du total de la colonne, vous devez l'ajouter dans la clause select du total, comme indiqué ci-dessous. Supposons que vous souhaitiez exclure Bob du total lui-même, alors voici une requête pour le faire.

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

Lecture bonus : Comment calculer le pourcentage de croissance d'une semaine sur l'autre dans MySQL

Comment calculer le pourcentage de colonne dans MySQL à l'aide de SUBSELECT/SUBQUERY

Vous pouvez également calculer le pourcentage de colonne à l'aide d'une sous-sélection, au lieu d'utiliser un JOIN, comme indiqué ci-dessous.

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

Si vous souhaitez ajouter une clause where pour filtrer vos données, vous devez la placer après le CROSS JOIN, comme indiqué ci-dessous. Sinon, vous obtiendrez une erreur.

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

Cependant, si vous souhaitez ajouter une clause where lors du total de la colonne, vous devez l'ajouter dans la clause select du total. Supposons que vous souhaitiez exclure Bob du total lui-même, alors voici une requête pour le faire.

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

Vous pouvez personnaliser les requêtes ci-dessus selon vos besoins pour calculer le pourcentage de colonne dans MySQL.

De plus, vous pouvez utiliser un outil de création de rapports pour tracer les données dans un graphique à secteurs ou un tableau de bord. Voici un exemple de graphique à secteurs créé à l'aide d'Ubiq.

Si vous souhaitez créer des graphiques, des tableaux de bord et des rapports à partir de la base de données MySQL, vous pouvez essayer Ubiq. Nous offrons un essai gratuit de 14 jours.