MySQL에서 두 열의 차이를 새로운 열로 구하는 방법
데이터베이스 작업을 하다 보면 최솟값과 최댓값처럼 서로 연관된 두 숫자형 열의 차이를 계산해 별도의 열로 출력해야 하는 경우가 자주 있습니다. MySQL에서는 SELECT 문 안에서 산술 연산자(-)를 활용하면 아주 간단하게 처리할 수 있습니다. 이번 글에서는 예제 테이블을 직접 만들어 보면서 두 열의 차이를 새로운 열로 가져오는 방법을 단계별로 알아보겠습니다.
1. 예제 테이블 생성
먼저 차이를 계산할 두 개의 열(LowValue, HighValue)을 가진 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
LowValue int,
HighValue int
);
Query OK, 0 rows affected (0.62 sec)2. 샘플 데이터 삽입
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(LowValue,HighValue) values(100,200); Query OK, 1 row affected (0.19 sec) mysql> insert into DemoTable(LowValue,HighValue) values(300,700); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable(LowValue,HighValue) values(1000,2000); Query OK, 1 row affected (0.13 sec)
3. 저장된 데이터 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----+----------+-----------+ | Id | LowValue | HighValue | +----+----------+-----------+ | 1 | 100 | 200 | | 2 | 300 | 700 | | 3 | 1000 | 2000 | +----+----------+-----------+ 3 rows in set (0.00 sec)
4. 두 열의 차이 계산하기
핵심은 SELECT 절에서 HighValue - LowValue처럼 두 열을 빼고, AS 키워드로 결과 열의 별칭을 지정하는 것입니다. 이렇게 하면 실제 테이블에는 존재하지 않지만 쿼리 결과에는 새로운 열처럼 표시됩니다.
mysql> select tbl.Id,tbl.LowValue,tbl.HighValue, HighValue-LowValue AS DifferenceBetweenTwoColumns from DemoTable tbl;
실행 결과는 다음과 같습니다.
+----+----------+-----------+-----------------------------+ | Id | LowValue | HighValue | DifferenceBetweenTwoColumns | +----+----------+-----------+-----------------------------+ | 1 | 100 | 200 | 100 | | 2 | 300 | 700 | 400 | | 3 | 1000 | 2000 | 1000 | +----+----------+-----------+-----------------------------+ 3 rows in set (0.00 sec)
추가 팁
만약 값의 크기와 관계없이 항상 양수인 차이가 필요하다면 ABS(HighValue - LowValue)처럼 ABS() 함수를 함께 사용하면 됩니다. 또한 이런 계산 값을 자주 사용한다면 MySQL 5.7 이상에서 지원하는 생성 열(Generated Column) 기능을 활용해 테이블 자체에 계산 열을 정의해 두는 것도 좋은 방법입니다.