COALESCE() 내에서 집계 함수 sum()을 사용할 수 있습니다. 아래 구문은 레코드가 존재하는 경우 모두의 합계를 반환하고 그렇지 않으면 0을 반환합니다. 구문은 다음과 같습니다.
select COALESCE(sum(yourColumnName2), 0) AS anyVariableName from yourTableName where yourColumnName1 like '%yourValue%';
위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.
mysql> create table SumDemo -> ( -> Words varchar(100), -> Counter int -> ); Query OK, 0 rows affected (0.93 sec)
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다.
mysql> insert into SumDemo values('Are You There',10); Query OK, 1 row affected (0.16 sec) mysql> insert into SumDemo values('Are You Not There',15); Query OK, 1 row affected (0.13 sec) mysql> insert into SumDemo values('Hello This is MySQL',12); Query OK, 1 row affected (0.09 sec) mysql> insert into SumDemo values('Hello This is not MySQL',14); Query OK, 1 row affected (0.24 sec)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다.
mysql> select *from SumDemo;
다음은 출력입니다.
+-------------------------+---------+ | Words | Counter | +-------------------------+---------+ | Are You There | 10 | | Are You Not There | 15 | | Hello This is MySQL | 12 | | Hello This is not MySQL | 14 | +-------------------------+---------+ 4 rows in set (0.00 sec)
다음은 레코드가 존재할 때마다 합계를 제공하는 쿼리입니다.
mysql> select COALESCE(sum(Counter), 0) AS SumOfAll from SumDemo where Words like '%hello%';
다음은 출력입니다.
+----------+ | SumOfAll | +----------+ | 26 | +----------+ 1 row in set (0.00 sec)
레코드가 없으면 0이 됩니다. 쿼리는 다음과 같습니다.
mysql> select COALESCE(sum(Counter), 0) AS SumOfAll from SumDemo where Words like '%End of MySQL%';
다음은 출력입니다.
+----------+ | SumOfAll | +----------+ | 0 | +----------+ 1 row in set (0.00 sec)