기본적으로 SQL에서는 사칙연산이 가능한데 비슷한 기능으로 SUM과같은 함수도 존재해서 개념적으로 헷갈리지않게 작성해보겠습니다.
COL1 | COL2 | COL3 | COL4 |
1 | (NULL) | 100 | 200 |
2 | 20 | (NULL) | 210 |
3 | 30 | (NULL) | (NULL) |
4 | 40 | 140 | 240 |
쿼리로 예시를 보기전에 먼저 짚고 넘어가야할게 몇가지 있습니다.
- SUM은 행들의 합이고 사칙연산은 각 컬럼들의 계산입니다.
- SUM과 같은 함수를 사용하면 결과는 한 행만 나옵니다.
1. 기본 SUM
SELECT SUM(COL1) FROM TABLE
예시테이블에 COL1컬럼들을 모두 더한는 간단한 쿼리입니다.
결과) 10
SELECT SUM(COL2) FROM TABLE
SUM에서 NULL이 잇는 행은 제외가 됩니다.
결과) 90
2. 기본 사칙연산
SELECT (COL1 + COL2 + COL3 + COL4) AS PLUS FROM TABLE
사칙연산은 각행들이 따로 진행이 되므로 데이터 행수만큼 결과가 나오고 NULL이 포함된 사칙연산은 NULL이됩니다.
결과)
PLUS |
NULL |
NULL |
NULL |
424 |
네번째 행을 제외한 행에는 NULL이 포함된 사칙연산이므로 NULL이 나오고 네번째 행은 NULL이 포함되지 않았으므로 정상적인 수치가 나옵니다.
3. SUM에 대한 사칙연산
SELECT SUM(COL1)+SUM(COL2)+SUM(COL3)+SUM(COL4) FROM TABLE
각 행들 값을 SUM으로 더한 다음에 +연산자로 합치는 쿼리입니다.
각 SUM이 먼저 수행이 되므로 각 컬럼들에서 NULL을 제외한 합을 구한뒤 +사칙연산을 하시면 됩니다.
( 10 + 90 + 240 + 650 )
결과) 990
4. 사칙연산에 대한 SUM
SELECT SUM(COL1+COL2+COL3+C0L4) FROM TABLE
각 행들에 사칙연산을 먼저 한뒤 나온 4개의 값을 SUM을 하는 쿼리인데
네번째 행을 제외하고는 모두 NULL이 포함되어 있기때문에 NULL, NULL, NULL , 425에 대한 SUM이 진행이 되어 결과 값은 425가 나오게 됩니다.
결과) 425
'sqld' 카테고리의 다른 글
SQLD 조인 정리 (1) | 2024.10.29 |
---|---|
SQLD 정렬 정리 (2) | 2024.10.29 |
계층형 쿼리 (0) | 2024.05.14 |