CASE WHEN을 SUM() 안에 넣으면 조건부 합계를 한 쿼리에 여러 개 구할 수 있습니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable1794 (
-> Amount INT
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1794 VALUES(100); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO DemoTable1794 VALUES(80); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO DemoTable1794 VALUES(320); Query OK, 1 row affected (0.00 sec)
데이터 조회
mysql> SELECT * FROM DemoTable1794;
+--------+ | Amount | +--------+ | 100 | | 80 | | 320 | +--------+ 3 rows in set (0.00 sec)
전체 합계와 150 미만만 합계 동시 조회
mysql> SELECT SUM(Amount),
-> SUM(CASE WHEN Amount < 150 THEN Amount ELSE 0 END) AS SecondAmount
-> FROM DemoTable1794;
+-------------+--------------+ | SUM(Amount) | SecondAmount | +-------------+--------------+ | 500 | 180 | +-------------+--------------+ 1 row in set (0.00 sec)
해설: 전체 합계: 100+80+320=500. 150 미만만 합계: 100+80=180 (320 제외). CASE WHEN 조건 THEN 값 ELSE 0 END 패턴으로 조건부 합계 구현. 여러 조건이면 SUM(CASE WHEN 조건1 THEN 값1 WHEN 조건2 THEN 값2 ELSE 0 END)로 확장 가능.