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

MySQL에서 날짜별로 값 합산하는 방법 – SUM()과 GROUP BY 활용하기

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'로 표시되어 보고서나 애플리케이션 출력 시 훨씬 읽기 편해집니다.