MySQL에서 백분율 계산

Mehvish Ashiq 2023년6월20일
  1. 하나의 열을 사용하여 MySQL에서 백분율 계산
  2. 두 개의 열을 사용하여 MySQL에서 백분율 계산
  3. OVER() 함수를 사용하여 MySQL에서 백분율 계산
MySQL에서 백분율 계산

하나 이상의 열을 사용하여 MySQL에서 백분율을 계산합니다. 이를 수행하는 방법에는 여러 가지가 있으며 모든 접근 방식에 대해 샘플 테이블을 사용할 것입니다.

하나의 열을 사용하여 MySQL에서 백분율 계산

sales라는 테이블이 있습니다. 여기서 ID, RepresentativeNameSale은 열 이름입니다. 다음 쿼리를 사용하여 이 자습서를 연습하기 위해 sales 테이블을 만들고 채울 수 있습니다.

예제 코드:

# 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;

출력:

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

Sale 필드의 백분율을 찾기 위해 Sale 속성의 SUM() 함수를 원래 관계(테이블)와 CROSS JOIN할 수 있습니다. 이를 수행하려면 다음 쿼리를 참조하십시오.

예제 코드:

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

출력:

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

여기에서 round() 메서드를 사용하여 소수점 둘째 자리에 대한 결과를 얻습니다. 백분율을 찾는 데 사용되는 쿼리에 초점을 맞추면 CROSS JOIN 키워드 다음에 하위 쿼리를 사용하여 Sale 속성의 합계를 찾는 것을 볼 수 있습니다.

두 개의 열을 사용하여 MySQL에서 백분율 계산

ID, GroupName, EmployeesCountSurveysCount를 열 이름으로 사용하여 tests라는 테이블을 생성합니다. 여기서 IDPRIMARY KEY입니다. 다음 쿼리를 사용하여 자습서 전체에서 우리와 함께 이동하십시오.

예제 코드:

# 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;

출력:

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

다음 쿼리를 사용하여 EmployeesCountSurveysCount 필드를 사용하여 백분율을 계산합니다.

예제 코드:

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

출력:

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

SurveysCountEmployeesCount로 나누고 100을 곱하여 백분율을 계산합니다. round() 함수를 사용하여 소수점 이하 두 자리에서 반올림하여 더 읽기 쉽게 만듭니다.

또한 이해하기 쉽도록 concat() 함수를 사용하여 % 기호와 연결합니다.

OVER() 함수를 사용하여 MySQL에서 백분율 계산

OVER() 함수는 특정 범위의 값에 대한 값을 계산하는 MySQL의 창 함수 중 하나입니다. 이 함수를 사용하여 백분율을 계산할 수도 있습니다.

OVER() 함수는 매우 유용하며 백분율 계산을 위한 하위 쿼리를 피하는 데 도움이 됩니다. 이 기능을 이해하기 위해 속성 이름으로 ProductID, ProductNameSupplierID가 있는 product 테이블을 만듭니다.

기술적으로 SupplierID는 외래 키여야 하지만 데모를 위한 간단한 필드로 간주합니다. 다음 쿼리를 사용하여 product 테이블을 만들고 데이터를 삽입합니다.

예제 코드:

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;

출력:

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

이제 다음 쿼리를 사용하여 각 공급자가 공급하는 제품의 비율을 계산합니다. 제품 합계를 얻기 위해 하위 쿼리 대신 OVER() 함수를 사용합니다.

예제 코드:

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

출력:

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

관련 문장 - MySQL Query