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

MySQL에서 특정 월의 레코드를 기준으로 선택한 열 값 합산하는 방법

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() 함수를 추가로 활용할 수 있습니다. 이 방식은 월별 매출 집계, 통계 리포트 생성 등 다양한 실무 시나리오에서 유용하게 활용됩니다.