Berechnen Sie den Prozentsatz in MySQL

Mehvish Ashiq 20 Juni 2023
  1. Verwenden Sie eine Spalte, um den Prozentsatz in MySQL zu berechnen
  2. Verwenden Sie zwei Spalten, um den Prozentsatz in MySQL zu berechnen
  3. Verwenden Sie die Funktion OVER(), um den Prozentsatz in MySQL zu berechnen
Berechnen Sie den Prozentsatz in MySQL

Wir berechnen den Prozentsatz in MySQL mit einer oder mehreren Spalten. Es gibt verschiedene Möglichkeiten, dies zu tun, und für jeden Ansatz verwenden wir eine Beispieltabelle.

Verwenden Sie eine Spalte, um den Prozentsatz in MySQL zu berechnen

Wir haben eine Tabelle mit dem Namen sales, wobei ID, RepresentativeName und Sale Spaltennamen sind. Die folgenden Abfragen können verwendet werden, um die Tabelle sales zu erstellen und zu füllen, um mit diesem Tutorial zu üben.

Beispielcode:

# create a table
CREATE TABLE sales (
  ID INT NOT NULL,
  RepresentativeName VARCHAR(45) NOT NULL,
  Sale INT NOT NULL,
  PRIMARY KEY (ID));

# insert data
INSERT INTO sales (ID, RepresentativeName, Sale) VALUES
(1, 'John', 15),
(2, 'Mehvish', 15),
(3, 'Saira', 30);

# display sales table data
SELECT * FROM sales;

Ausgang:

+----+--------------------+------+
| ID | RepresentativeName | Sale |
+----+--------------------+------+
|  1 | John               |   15 |
|  2 | Mehvish            |   15 |
|  3 | Saira              |   30 |
+----+--------------------+------+
3 rows in set (0.00 sec)

Um den Prozentsatz des Felds Sale zu finden, können wir die Funktion SUM() des Attributs Sale mit der ursprünglichen Relation (Tabelle) CROSS JOIN machen. Sehen Sie sich dazu die folgende Abfrage an.

Beispielcode:

SELECT RepresentativeName, Sale,
round(((Sale * 100) / temp.SalesSum),2) AS Percentage
FROM sales
CROSS JOIN (SELECT SUM(Sale) AS SalesSum FROM sales) temp;

Ausgang:

+--------------------+------+------------+
| RepresentativeName | Sale | Percentage |
+--------------------+------+------------+
| John               |   15 |      25.00 |
| Mehvish            |   15 |      25.00 |
| Saira              |   30 |      50.00 |
+--------------------+------+------------+
3 rows in set (0.00 sec)

Hier verwenden wir die Methode round(), um Ergebnisse mit zwei Dezimalstellen zu erhalten. Wenn wir uns auf die Abfrage konzentrieren, die verwendet wurde, um den Prozentsatz zu finden, können wir sehen, dass wir die Unterabfrage nach dem Schlüsselwort CROSS JOIN verwenden, um die Summe des Attributs Sale zu finden.

Verwenden Sie zwei Spalten, um den Prozentsatz in MySQL zu berechnen

Wir erstellen eine Tabelle namens tests mit ID, GroupName, EmployeesCount und SurveysCount als Spaltennamen, wobei ID der PRIMARY KEY ist. Verwenden Sie die folgenden Abfragen, um sich mit uns durch das Tutorial zu bewegen.

Beispielcode:

# create a table
CREATE TABLE tests (
  ID INT NOT NULL,
  GroupName VARCHAR(45) NOT NULL,
  EmployeesCount INT NOT NULL,
  SurveysCount INT NOT NULL,
  PRIMARY KEY (ID));

# insert data
INSERT INTO tests (ID, GroupName, EmployeesCount, SurveysCount) VALUES
(1, 'Group A', '200', '10'),
(2, 'Group B', '300', '200'),
(3, 'Group C', '400', '300');

# display tests table data
SELECT * FROM tests;

Ausgang:

+----+-----------+----------------+---------------+
| ID | GroupName | EmployeesCount | SurveysCount |
+----+-----------+----------------+---------------+
|  1 | Group A   |            200 |            10 |
|  2 | Group B   |            300 |           200 |
|  3 | Group C   |            400 |           300 |
+----+-----------+----------------+---------------+
3 rows in set (0.00 sec)

Wir verwenden die folgende Abfrage, um den Prozentsatz mithilfe der Felder EmployeesCount und SurveysCount zu berechnen.

Beispielcode:

SELECT GroupName, EmployeesCount, SurveysCount, COUNT( SurveysCount ) AS testA,
        concat(round(( SurveysCount/EmployeesCount * 100 ),2),'%') AS Percentage
FROM tests
GROUP BY EmployeesCount;

Ausgang:

+-----------+----------------+--------------+-------+------------+
| GroupName | EmployeesCount | SurveysCount | testA | Percentage |
+-----------+----------------+--------------+-------+------------+
| Group A   |            200 |           10 |     1 | 5.00%      |
| Group B   |            300 |          200 |     1 | 66.67%     |
| Group C   |            400 |          300 |     1 | 75.00%     |
+-----------+----------------+--------------+-------+------------+
3 rows in set (0.00 sec)

Wir berechnen den Prozentsatz, indem wir SurveysCount durch EmployeesCount dividieren und mit 100 multiplizieren. Wir verwenden die Funktion round(), um ihn auf zwei Dezimalstellen zu runden, um ihn besser lesbar zu machen.

Verketten Sie es außerdem mit dem Symbol % mit der Funktion concat(), um es leicht verständlich zu machen.

Verwenden Sie die Funktion OVER(), um den Prozentsatz in MySQL zu berechnen

Die Funktion OVER() ist eine der Fensterfunktionen in MySQL, die die Werte über einen bestimmten Wertebereich berechnet. Wir können diese Funktion auch verwenden, um Prozentsätze zu berechnen.

Die Funktion OVER() ist sehr nützlich und hilft uns, die Unterabfragen zur Berechnung von Prozentsätzen zu vermeiden. Erstellen Sie eine products-Tabelle mit ProductID, ProductName und SupplierID als Attributnamen, um diese Funktion zu verstehen.

Technisch gesehen muss die SupplierID ein Fremdschlüssel sein, aber wir nehmen es als einfaches Feld nur zur Demonstration. Verwenden Sie die folgenden Abfragen, um die Tabelle Produkte zu erstellen und Daten einzufügen.

Beispielcode:

CREATE TABLE products (
  ProductID INT NOT NULL,
  ProductName VARCHAR(45) NOT NULL,
  SupplierID INT NOT NULL,
  PRIMARY KEY (ProductID));

INSERT INTO products (ProductID, ProductName, SupplierID)
VALUES
(1,'Coca Cola', 2),
(2, 'Wavy Chips', 2),
(3, 'Dairy Milk Chocolate', 1),
(4, 'Parley Biscuits', 3),
(5, 'Knorr Nodles', 3),
(6, 'Snickers Chocolate', 3);

SELECT * FROM products;

Ausgang:

+-----------+----------------------+------------+
| ProductID | ProductName          | SupplierID |
+-----------+----------------------+------------+
|         1 | Coca Cola            |          2 |
|         2 | Wavy Chips           |          2 |
|         3 | Dairy Milk Chocolate |          1 |
|         4 | Parley Biscuits      |          3 |
|         5 | Knorr Nodles         |          3 |
|         6 | Snickers Chocolate   |          3 |
+-----------+----------------------+------------+
6 rows in set (0.00 sec)

Verwenden Sie nun die folgende Abfrage, um den Prozentsatz der von jedem Lieferanten gelieferten Produkte zu berechnen. Wir verwenden die Funktion OVER() anstelle von Unterabfragen, um die Summe der Produkte zu erhalten.

Beispielcode:

SELECT SupplierID AS Supplied_By, count(*) * 100.0 / sum(count(*)) Over() as 'Supplier Percentage'
FROM products
GROUP BY SupplierID;

Ausgang:

+-------------+---------------------+
| Supplied_By | Supplier Percentage |
+-------------+---------------------+
|           2 |            33.33333 |
|           1 |            16.66667 |
|           3 |            50.00000 |
+-------------+---------------------+
3 rows in set (0.09 sec)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Verwandter Artikel - MySQL Query