MySQL에서 수학적 연산으로 결과 정렬하기
네, 가능합니다. MySQL의 ORDER BY 절에는 단순한 컬럼 이름뿐만 아니라 Quantity * Price처럼 수학적 연산식을 그대로 사용할 수 있습니다. 이를 활용하면 두 컬럼의 곱(예: 총액)을 기준으로 결과를 손쉽게 정렬할 수 있습니다.
실제 동작을 확인하기 위해 예제 테이블을 만들고 데이터를 삽입한 뒤, 오름차순과 내림차순 정렬 결과를 차례대로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 테이블을 생성합니다:
mysql> create table orderByMathCalculation
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Quantity int,
-> Price int
-> );
Query OK, 0 rows affected (0.57 sec)
위 쿼리는 자동 증가 기본키인 Id, 수량을 나타내는 Quantity, 가격을 나타내는 Price 세 개의 컬럼을 가진 테이블을 만듭니다.
2. 데이터 삽입
INSERT 명령어로 몇 개의 레코드를 추가합니다:
mysql> insert into orderByMathCalculation(Quantity,Price) values(10,50);
Query OK, 1 row affected (0.21 sec)
mysql> insert into orderByMathCalculation(Quantity,Price) values(20,40);
Query OK, 1 row affected (0.14 sec)
mysql> insert into orderByMathCalculation(Quantity,Price) values(2,20);
Query OK, 1 row affected (0.13 sec)
mysql> insert into orderByMathCalculation(Quantity,Price) values(11,10);
Query OK, 1 row affected (0.24 sec)
3. 전체 데이터 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다:
mysql> select *from orderByMathCalculation;
실행 결과는 다음과 같습니다:
+----+----------+-------+
| Id | Quantity | Price |
+----+----------+-------+
| 1 | 10 | 50 |
| 2 | 20 | 40 |
| 3 | 2 | 20 |
| 4 | 11 | 10 |
+----+----------+-------+
4 rows in set (0.00 sec)
사례 1: 수학적 연산으로 오름차순 정렬
수량과 가격을 곱한 값(총액)을 기준으로 오름차순 정렬하는 쿼리입니다:
mysql> select *from orderByMathCalculation order by Quantity*Price;
실행 결과는 다음과 같습니다:
+----+----------+-------+
| Id | Quantity | Price |
+----+----------+-------+
| 3 | 2 | 20 |
| 4 | 11 | 10 |
| 1 | 10 | 50 |
| 2 | 20 | 40 |
+----+----------+-------+
4 rows in set (0.00 sec)
각 행의 Quantity * Price 값은 순서대로 40, 110, 500, 800입니다. 따라서 곱셈 결과가 작은 레코드부터 차례로 출력된 것을 확인할 수 있습니다.
사례 2: 수학적 연산으로 내림차순 정렬
같은 연산식 뒤에 DESC 키워드를 붙이면 내림차순으로 정렬됩니다:
mysql> select *from orderByMathCalculation order by Quantity*Price desc;
실행 결과는 다음과 같습니다:
+----+----------+-------+
| Id | Quantity | Price |
+----+----------+-------+
| 2 | 20 | 40 |
| 1 | 10 | 50 |
| 4 | 11 | 10 |
| 3 | 2 | 20 |
+----+----------+-------+
4 rows in set (0.00 sec)
마무리
이처럼 MySQL의 ORDER BY 절에서는 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연산뿐만 아니라 함수나 CASE 식까지 자유롭게 조합해 정렬 기준으로 사용할 수 있습니다. 계산 결과를 별도의 컬럼으로 미리 저장하지 않고도 원하는 기준으로 정렬할 수 있다는 점이 큰 장점입니다. 또한 SELECT 목록에서 연산식에 별칭(alias)을 지정하고, ORDER BY에서 그 별칭을 참조하는 방식으로도 동일한 결과를 얻을 수 있습니다.