Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL ORDER BY 절에서 수학적 연산으로 결과 정렬하는 방법

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에서 그 별칭을 참조하는 방식으로도 동일한 결과를 얻을 수 있습니다.