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

MySQL에서 조건별로 열 합계 구하는 방법 (GROUP BY 활용)

MySQL에서는 GROUP BY 절과 집계 함수 SUM()을 함께 사용하면 특정 조건이나 기준에 따라 열의 합계를 손쉽게 구할 수 있습니다. 이번 글에서는 예제 테이블을 만들고, ProductId의 십의 자리 숫자를 기준으로 가격 합계를 그룹화하여 조회하는 방법을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성하기

먼저 테이블을 생성합니다.

mysql> create table DemoTable1489
    -> (
    -> ProductId int,
    -> ProductPrice int
    -> );
Query OK, 0 rows affected (0.49 sec)

2. 데이터 삽입하기

INSERT 명령어를 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable1489 values(100,900);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1489 values(115,1000);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1489 values(119,2100);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1489 values(125,2100);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1489 values(128,2900);
Query OK, 1 row affected (0.25 sec)

3. 전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable1489;

실행 결과는 다음과 같습니다.

+-----------+--------------+
| ProductId | ProductPrice |
+-----------+--------------+
|       100 |          900 |
|       115 |         1000 |
|       119 |         2100 |
|       125 |         2100 |
|       128 |         2900 |
+-----------+--------------+
5 rows in set (0.00 sec)

4. 조건에 따라 합계 구하기

이제 ProductId div 10, 즉 ProductId를 10으로 나눈 몫을 기준으로 그룹화하여 각 그룹의 가격 합계를 구하는 쿼리입니다.

mysql> select ProductId div 10,sum(ProductPrice) from DemoTable1489
    -> group by ProductId div 10;

실행 결과는 다음과 같습니다.

+------------------+-------------------+
| ProductId div 10 | sum(ProductPrice) |
+------------------+-------------------+
|               10 |               900 |
|               11 |              3100 |
|               12 |              5000 |
+------------------+-------------------+
3 rows in set (0.00 sec)

결과 해석

DIV 연산자는 정수 나눗셈의 몫을 반환합니다. 따라서 ProductId가 100인 상품은 10 그룹에, 115와 119는 11 그룹에, 125와 128은 12 그룹에 속하게 됩니다.

  • 그룹 10: 900 (상품 ID 100)
  • 그룹 11: 1000 + 2100 = 3100 (상품 ID 115, 119)
  • 그룹 12: 2100 + 2900 = 5000 (상품 ID 125, 128)

이처럼 GROUP BYSUM()을 조합하면 원하는 조건·기준별로 데이터를 집계할 수 있습니다. 실무에서는 날짜, 카테고리, 지역 등 다양한 컬럼을 기준으로 응용할 수 있으니 참고하세요.