[Oracle] 오라클 가로 합계 구하는 방법
- 데이터베이스/오라클
- 2023. 8. 2.
오라클 쿼리에서 가로 합계를 구하기 위해서는, 합계를 구할 각 칼럼을 SUM 함수를 사용하여 합산 후 모두 더하면 가로 합계가 계산된다. 오라클은 NULL과 수치 값을 더할 수 없기 때문에 가로 합계를 구할 때 계산 오류가 발생할 수 있으므로 아래의 주의 사항도 꼭 확인하기 바란다. 세로의 총합계를 구하기 위해서는 ROLLUP 함수를 사용하면 구할 수 있다.
목차 |
가로 합계 구하기
WITH temp AS
(
SELECT 150 AS col1, 80 AS col2, 200 AS col3 FROM dual UNION ALL
SELECT 100 AS col1, NULL AS col2, 250 AS col3 FROM dual UNION ALL
SELECT 200 AS col1, 100 AS col2, NULL AS col3 FROM dual UNION ALL
SELECT 120 AS col1, 200 AS col2, 100 AS col3 FROM dual
)
SELECT SUM(col1)
, SUM(col2)
, SUM(col3)
, SUM(col1) + SUM(col2) + SUM(col3)
FROM temp
오라클에서 여러 개의 칼럼을 가로로 합계를 구할 때는 칼럼별 SUM 함수로 합산 후 모두 더해주면 된다.
가로 합계 구할 때 주의 사항
WITH temp AS
(
SELECT 150 AS col1, 80 AS col2, 200 AS col3 FROM dual UNION ALL
SELECT 100 AS col1, NULL AS col2, 250 AS col3 FROM dual UNION ALL
SELECT 200 AS col1, 100 AS col2, NULL AS col3 FROM dual UNION ALL
SELECT 120 AS col1, 200 AS col2, 100 AS col3 FROM dual
)
SELECT SUM(col1)
, SUM(col2)
, SUM(col3)
, SUM(col1 + col2 + col3) AS sum1
, SUM(NVL(col1, 0) + NVL(col2, 0) + NVL(col3, 0)) AS sum2
FROM temp
칼럼의 값을 모두 합산 후 SUM 함수로 최종 합산할 경우, 칼럼에 NULL이 있을 경우 합산에 오류가 있을 수 있다.
오라클은 NULL과 수치 값을 더할 경우 연산이 되지 않고 NULL이 반환된다.
수치 값을 더할 때는 NULL이 없도록 NVL 함수로 치환 후 합산을 해야 하며, 가로 합계를 구할 때는 첫 번째 예제처럼 칼럼별 SUM 함수로 합산 후 더하는 것이 효율적이다. (예, SUM(col1) + SUM(col2) + SUM(col3))
GROUP BY 절과 가로 합계 구하기
SELECT job
, SUM(sal)
, SUM(comm)
, SUM(sal) + SUM(comm)
FROM emp
GROUP BY job
GROUP BY 절을 사용할 때는 칼럼별 SUM 함수로 합산 후 모두 더해주면 된다.