아래 구문을 사용하여 단일 행의 값을 합산할 수 있습니다 -
사례 1 − 다음은 컬럼에 NULL 값이 없는 경우의 구문입니다. −
SELECT yourColumnName1+yourColumnName2+yourColumnName3+.......+N as anyVariableName FROM yourTableName;
사례 2 − 열에 NULL 값이 있는 경우 이 구문을 사용하십시오. −
SELECT IFNULL(yourColumnName1,0)+ IFNULL(yourColumnName2,0)+ IFNULL(yourColumnName3,0)+.............+N AS anyVariableName FROM yourTableName;
위의 구문을 이해하기 위해 테이블을 생성해 보겠습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -
mysql> create table SumValueOfSingleRow -> ( -> Id int NOT NULL AUTO_INCREMENT, -> FirstValue int, -> SecondValue int, -> ThirdValue int, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.70 sec)
삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하십시오. 쿼리는 다음과 같습니다 -
mysql> insert into SumValueOfSingleRow(FirstValue,SecondValue,ThirdValue) values(1,0,1); Query OK, 1 row affected (0.11 sec) mysql> insert into SumValueOfSingleRow(FirstValue,SecondValue,ThirdValue) values(1,NULL,0); Query OK, 1 row affected (0.19 sec) mysql> insert into SumValueOfSingleRow(FirstValue,SecondValue,ThirdValue) values(NULL,NULL,NULL); Query OK, 1 row affected (0.09 sec)
select 문을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -
mysql> select *from SumValueOfSingleRow;
다음은 출력입니다 -
+----+------------+-------------+------------+ | Id | FirstValue | SecondValue | ThirdValue | +----+------------+-------------+------------+ | 1 | 1 | 0 | 1 | | 2 | 1 | NULL | 0 | | 3 | NULL | NULL | NULL | +----+------------+-------------+------------+ 3 rows in set (0.00 sec)
샘플 출력을 보십시오. CASE 1을 사용하면 적절한 결과를 얻을 수 없습니다.
위에서 논의한 CASE 1을 확인해보자. 쿼리는 다음과 같습니다 -
mysql> select FirstValue+SecondValue+ThirdValue as SingleRowSum from SumValueOfSingleRow;
다음은 출력입니다 -
+--------------+ | SingleRowSum | +--------------+ | 2 | | NULL | | NULL | +--------------+ 3 rows in set (0.06 sec)
샘플 출력을 보면 위의 쿼리는 NULL 케이스를 처리하지 않습니다. 이제 CASE 2를 사용하여 적절한 결과를 얻을 수 있습니다.
쿼리는 다음과 같습니다 -
mysql> select ifnull(FirstValue,0)+ ifnull(SecondValue,0)+ ifnull(ThirdValue,0) as SingleRowSum from SumValueOfSingleRow;
다음은 단일 행 값의 합계를 표시하는 출력입니다. -
+--------------+ | SingleRowSum | +--------------+ | 2 | | 1 | | 0 | +--------------+ 3 rows in set (0.06 sec)