Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So berechnen Sie den Prozentsatz der Spalte in MySQL

Manchmal müssen Sie möglicherweise den Prozentsatz einer Spalte (z. B. Umsatz, Umsatz) in Ihren Daten berechnen, um zu verstehen, wie viel Prozent des Gesamtwerts Ihrer Spalte aus jeder Zeile stammen (z. B. Land, Bundesland usw.). Da es keine vorkonfigurierte Funktion gibt, um diesen Wert zu berechnen, müssen Sie eine SQL-Abfrage dafür schreiben. So berechnen Sie den Prozentsatz der Spalte in MySQL

So berechnen Sie den Spaltenprozentsatz in MySQL

Nehmen wir an, Sie haben die folgende Tabelle wie unten gezeigt.

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

Nehmen wir an, Sie möchten eine Spalte „Prozent vom Gesamtwert“ anzeigen, die einfach den Prozentsatz des gesamten Verkaufs darstellt Spalte, wie unten gezeigt.

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

Sie können dies auf mehrere Arten tun, indem Sie nur eine einzige Abfrage verwenden. Es ist nicht erforderlich, separate Abfragen für die Berechnung von Gesamtsumme und Prozentsatz zu schreiben. Sehen wir uns jeden von ihnen an

Bonuslektüre: So berechnen Sie den Prozentsatz von zwei Spalten in MySQL

So berechnen Sie den Spaltenprozentsatz in MySQL mit CROSS JOIN

Um den Prozentsatz der Spalte in MySQL zu berechnen, können Sie einfach sum() überkreuzen des Verkaufs Spalte mit der Originaltabelle.

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

Wenn Sie eine where-Klausel zum Filtern Ihrer Daten hinzufügen möchten, müssen Sie sie wie unten gezeigt nach dem CROSS JOIN platzieren. Andernfalls erhalten Sie eine Fehlermeldung.

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

Wenn Sie jedoch beim Summieren der Spalte eine where-Klausel hinzufügen möchten, müssen Sie sie wie unten gezeigt in der select-Klausel von total hinzufügen. Angenommen, Sie möchten Bob aus der Gesamtsumme selbst ausschließen, dann ist hier eine Abfrage, um dies zu tun.

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

Bonuslektüre: So berechnen Sie das prozentuale Wachstum Woche für Woche in MySQL

So berechnen Sie den Spaltenprozentsatz in MySQL mit SUBSELECT/SUBQUERY

Sie können den Prozentsatz der Spalte auch mit einer Unterauswahl berechnen, anstatt einen JOIN zu verwenden, wie unten gezeigt.

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

Wenn Sie eine where-Klausel zum Filtern Ihrer Daten hinzufügen möchten, müssen Sie sie wie unten gezeigt nach dem CROSS JOIN platzieren. Andernfalls erhalten Sie eine Fehlermeldung.

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

Wenn Sie jedoch während der Summierung der Spalte eine where-Klausel hinzufügen möchten, müssen Sie sie in der select-Klausel von total hinzufügen. Angenommen, Sie möchten Bob aus der Gesamtsumme selbst ausschließen, dann ist hier eine Abfrage, um dies zu tun.

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

Sie können die obigen Abfragen gemäß Ihren Anforderungen anpassen, um den Prozentsatz der Spalten in MySQL zu berechnen.

Darüber hinaus können Sie ein Berichtstool verwenden, um die Daten in einem Tortendiagramm oder Dashboard darzustellen. Hier ist ein Beispiel für ein Tortendiagramm, das mit Ubiq erstellt wurde.

Wenn Sie Diagramme, Dashboards und Berichte aus einer MySQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.