MySQL에서 날짜 데이터가 포함된 테이블을 다룰 때, 특정 월에 해당하는 레코드만 골라서 열 값을 합산해야 하는 경우가 자주 있습니다. 예를 들어 12월 매출 합계만 구하고 싶다면 MONTH() 함수와 SUM() 함수를 함께 활용하면 됩니다.
1. 테이블 생성하기
먼저 예제로 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PurchaseDate date,
SalePrice int
);
Query OK, 0 rows affected (0.51 sec)2. 샘플 데이터 삽입하기
insert 명령을 사용하여 테이블에 여러 개의 레코드를 삽입합니다. 구매 날짜(PurchaseDate)가 서로 다른 연도와 월에 걸쳐 있도록 구성했습니다.
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2018-01-10',450);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2019-12-25',1000);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2016-12-02',5560);
Query OK, 1 row affected (0.07 sec)
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2015-02-20',4550);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(PurchaseDate,SalePrice) values('2015-12-11',4110);
Query OK, 1 row affected (0.15 sec)3. 전체 레코드 조회하기
select 문을 사용하여 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+--------------+-----------+ | Id | PurchaseDate | SalePrice | +----+--------------+-----------+ | 1 | 2018-01-10 | 450 | | 2 | 2019-12-25 | 1000 | | 3 | 2016-12-02 | 5560 | | 4 | 2015-02-20 | 4550 | | 5 | 2015-12-11 | 4110 | +----+--------------+-----------+ 5 rows in set (0.00 sec)
4. 특정 월 기준으로 열 값 합산하기
다음은 특정 월을 기준으로 선택한 열의 값을 합산하는 쿼리입니다. 여기서는 구매 날짜(PurchaseDate)가 12월인 레코드의 판매 가격(SalePrice)만 합산해 보겠습니다.
mysql> select SUM(SalePrice) from DemoTable
where month(PurchaseDate)=12;MONTH() 함수는 날짜 값에서 월(1~12)만 추출합니다. 따라서 위 조건은 연도와 관계없이 12월에 해당하는 레코드만 필터링하게 됩니다. 조건에 해당하는 레코드는 다음과 같습니다.
2019-12-25 2016-12-02 2015-12-11
이 세 레코드의 SalePrice(1000 + 5560 + 4110)가 합산되어 최종적으로 다음과 같은 결과가 출력됩니다.
+----------------+ | SUM(SalePrice) | | 10670 | +----------------+ 1 row in set (0.00 sec)
핵심 정리
특정 월의 데이터만 집계할 때는 MONTH(날짜_열) = 원하는_월 형태의 WHERE 조건을 사용하면 됩니다. 만약 특정 연도까지 함께 지정하고 싶다면 YEAR(PurchaseDate)=2015 AND MONTH(PurchaseDate)=12처럼 YEAR() 함수를 추가로 활용할 수 있습니다. 이 방식은 월별 매출 집계, 통계 리포트 생성 등 다양한 실무 시나리오에서 유용하게 활용됩니다.