MySQL에서 동일한(또는 유사한) 날짜를 기준으로 값을 합산하려면 집계 함수인 SUM()과 GROUP BY 절을 함께 사용하면 됩니다. 이 방법을 사용하면 같은 날짜에 속한 여러 레코드의 값들을 하나로 묶어 총합을 구할 수 있습니다.
1. 예제 테이블 생성하기
먼저 실습에 사용할 테이블을 만들어 보겠습니다. 상품 구매 날짜와 수량을 저장하는 간단한 테이블입니다.
mysql> create table DemoTable1522
-> (
-> ProductPurchaseDate date,
-> NumberOfProduct int
-> );
Query OK, 0 rows affected (1.51 sec)2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다. 의도적으로 같은 날짜('2019-01-21')의 레코드를 여러 개 넣어 그룹화 결과를 확인하기 좋게 했습니다.
mysql> insert into DemoTable1522 values('2019-01-21',45);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1522 values('2018-12-31',78);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1522 values('2019-01-21',67);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1522 values('2019-03-01',56);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable1522 values('2018-01-21',97);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1522 values('2019-01-21',47);
Query OK, 1 row affected (0.15 sec)3. 전체 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1522;
실행 결과는 다음과 같습니다.
+---------------------+-----------------+ | ProductPurchaseDate | NumberOfProduct | +---------------------+-----------------+ | 2019-01-21 | 45 | | 2018-12-31 | 78 | | 2019-01-21 | 67 | | 2019-03-01 | 56 | | 2018-01-21 | 97 | | 2019-01-21 | 47 | +---------------------+-----------------+ 6 rows in set (0.00 sec)
4. 날짜별 합산 쿼리 작성하기
이제 핵심 부분입니다. 아래 쿼리는 SUM() 함수와 GROUP BY를 사용하여 구매 날짜별로 상품 수량을 합산합니다.
mysql> select ProductPurchaseDate,sum(NumberOfProduct) from DemoTable1522
-> group by ProductPurchaseDate;실행 결과는 다음과 같습니다.
+---------------------+----------------------+ | ProductPurchaseDate | sum(NumberOfProduct) | +---------------------+----------------------+ | 2019-01-21 | 159 | | 2018-12-31 | 78 | | 2019-03-01 | 56 | | 2018-01-21 | 97 | +---------------------+----------------------+ 4 rows in set (0.00 sec)
결과 분석
위 결과를 보면 원래 6개의 레코드가 날짜 기준으로 4개의 그룹으로 묶였습니다. 특히 '2019-01-21' 날짜에는 세 개의 레코드(45 + 67 + 47)가 있었고, 이들이 하나로 합산되어 총 159가 출력된 것을 확인할 수 있습니다.
추가 팁: 가독성을 위한 별칭(Alias) 사용
합산 결과 컬럼의 이름을 더 직관적으로 표시하고 싶다면 AS 키워드로 별칭을 지정할 수 있습니다.
select ProductPurchaseDate,
sum(NumberOfProduct) AS TotalProducts
from DemoTable1522
group by ProductPurchaseDate;이렇게 하면 결과 컬럼명이 'sum(NumberOfProduct)' 대신 'TotalProducts'로 표시되어 보고서나 애플리케이션 출력 시 훨씬 읽기 편해집니다.