MySQL에서 백분율 계산
하나 이상의 열을 사용하여 MySQL에서 백분율을 계산합니다. 이를 수행하는 방법에는 여러 가지가 있으며 모든 접근 방식에 대해 샘플 테이블을 사용할 것입니다.
하나의 열을 사용하여 MySQL에서 백분율 계산
sales
라는 테이블이 있습니다. 여기서 ID
, RepresentativeName
및 Sale
은 열 이름입니다. 다음 쿼리를 사용하여 이 자습서를 연습하기 위해 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
, EmployeesCount
및 SurveysCount
를 열 이름으로 사용하여 tests
라는 테이블을 생성합니다. 여기서 ID
는 PRIMARY 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)
다음 쿼리를 사용하여 EmployeesCount
및 SurveysCount
필드를 사용하여 백분율을 계산합니다.
예제 코드:
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)
SurveysCount
를 EmployeesCount
로 나누고 100을 곱하여 백분율을 계산합니다. round()
함수를 사용하여 소수점 이하 두 자리에서 반올림하여 더 읽기 쉽게 만듭니다.
또한 이해하기 쉽도록 concat()
함수를 사용하여 %
기호와 연결합니다.
OVER()
함수를 사용하여 MySQL에서 백분율 계산
OVER()
함수는 특정 범위의 값에 대한 값을 계산하는 MySQL의 창 함수 중 하나입니다. 이 함수를 사용하여 백분율을 계산할 수도 있습니다.
OVER()
함수는 매우 유용하며 백분율 계산을 위한 하위 쿼리를 피하는 데 도움이 됩니다. 이 기능을 이해하기 위해 속성 이름으로 ProductID
, ProductName
및 SupplierID
가 있는 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)